안녕하세요 크로네입니다.
오늘은 자바스크립트에서 쿼리스트링을 가져와서 JSON 으로 바꿔보겠습니다.
1. 쿼리스트링을 가져오기
자바스크립트에서 쿼리스트링은 location.search 에 있습니다.
console.log(location.search); // 예시: ?abc=123&def=456
location.search 는 앞에 '?' 가 오고 뒤에 글자가 나오는데요
이 글자를 더 잘 활용하려면 이 값을 JSON 으로 바꿀 필요가 있습니다.
2. JSON 으로 바꾸기
일단 JSON 으로 바꾸려면 먼저 앞에있는 '?' 를 지울 필요가 있습니다.
splice() 함수를 이용해 앞의 한글자를 잘라보겠습니다.
console.log(location.search.splice(1)); // abc=123&def=456
그럼 여기에서 각각의 데이터를 나눠주어야겠죠?
'&' 를 기준으로 split 하면, ["abc=123", "def=456"] 으로 나눠질겁니다.
console.log(location.search.splice(1).split("&")); // ["abc=123", "def=456"]
그런데 여기서 부터가 문제입니다.
어떻게 하면 Array 를 Object로 바꿀 수 있을까요?
아래의 코드를 쓰면 됩니다.
var querystring = location.search.splice(1).split("&");
var query = {};
for(var i = 0; i < querystring.length; i++) {
query[querystring[i].split("=")[0]] = querystring[i].split("=")[1];
}
console.log(query); // {"abc": "123", "def": "456"}
위에서는 querystring이라는 변수를 만들고
query 라는 변수에 빈 JSON 을 만듭니다.
그 다음 for문을 querystring.length 번 돌면서
query에 querystring[i].split("=")[0] 를 querystring[i].split("=")[1] 로 설정합니다.
참고로 여기에서 querystring[i].split("=") 은 ["abc", "123"](예시) 입니다.
이렇게 하면 쿼리스트링을 잘 변환했습니다.
그런데... 여기에서 123 을 숫자 123 으로 할 수는 없을까요?
글자 123 을 숫자로 변환할 수 있을 때 자동으로
숫자로 변환하게 할 수는 없을까요?
이것도 가능합니다!
3. 값이 숫자라면
일단 위 코드를 봅시다.
var querystring = location.search.splice(1).split("&");
var query = {};
for(var i = 0; i < querystring.length; i++) {
query[querystring[i].split("=")[0]] = querystring[i].split("=")[1];
}
console.log(query); // {"abc": "123", "def": "456"}
이곳에서는 값을 바로 설정했습니다.
하지만 이곳에 약간의 조건을 넣으면 될겁니다.
그런데 어떻게 글자 123이 숫자 123인걸 확인할까요?
바로 곱하기를 이용하면 됩니다.
글자에 곱하기 1을 해보겠습니다.
console.log("abc" * 1); // NaN
NaN 이 나왔습니다.
그런데 만약 변환이 가능하다면요?
console.log("123" * 1); // (숫자) 123
숫자가 변환되어 나왔습니다.
그렇다면 곱한값이 NaN 일때에는 그대로,
곱한값의 type 이 number 인경우 1을 곱한 값으로 저장하면 되겠죠.
var querystring = location.search.splice(1).split("&");
var query = {};
for(var i = 0; i < querystring.length; i++) {
if(querystring[i].split("=")[1] * 1 == NaN) {
query[querystring[i].split("=")[0]] = querystring[i].split("=")[1];
} else {
query[querystring[i].split("=")[0]] = querystring[i].split("=")[1] * 1;
}
}
console.log(query); // {"abc": 123, "def": 456}
이렇게 하면 값이 숫자로 변환할 수 있는경우 변환을 한 값을 출력하게 됩니다.
지금까지 자바스크립트에서 쿼리스트링을 가져와서 JSON 으로 바꾸기 였는데요,
마음에 드셨다면 공감 한번씩 눌러주시면 감사하겠습니다.
이상 크로네였습니다.
'코딩' 카테고리의 다른 글
[코딩] 프로토타입? 그게 뭐죠? (0) | 2022.12.08 |
---|---|
[Node.js] Srt 자막파일을 JSON 으로 파싱하고 수정하기 1편 (0) | 2022.12.07 |
[Node.js] 데이터베이스 직접 만들기 2편 (0) | 2022.11.06 |
[웹] 세로선 가로선 만들기 (0) | 2022.11.06 |
[Node.js] 데이터베이스 직접 만들기 1편 (0) | 2022.11.05 |
댓글