1. forEach
ex) string : 'banana=10&apple=20&orange=10'
을 key, value로 나누기
function parse(qs) {
const queryString = qs.substr(1); // substr은 문자열 슬라이스를 담당합니다.
const chunks = queryString.split('&');
let result = {};
chunks.forEach( (chunk) => {
const[key, value] = chunnk.split('=');
result[key] = value;
});
return result
}
여기서 map 함수를 사용하면 더욱 쉽게 분리가 가능하다.
map은 반환된 결과값으로 새로운 배열은 만드는 함수이다.
function parse(qs) {
const queryString = qs.substr(1); // substr은 문자열 슬라이스를 담당합니다.
const chunks = queryString.split('&');
const result = chunks.map( (chunk) => {
const[key, value] = chunnk.split('=');
return {key : key, value : value};
});
return result;
}
reudce() 함수
reduce(callbaclk, initialValue) 를 받는다.
이떄 reduce 함수는 호출한 배열의 각 요소 마다 콜백을 한번씩 실행한다. 리턴값은 누적 계산의 결과 값이다.
따라서 위의 예를 다르게 나타낼 수 있다.
function parse(qs) {
const queryString = qs.substr(1); // substr은 문자열 슬라이스를 담당합니다.
const chunks = queryString.split('&');
const result = chunks
.map( (chunk) => {
const[key, value] = chunnk.split('=');
return {key : key, value : value};
});
.reduce( (result, item) => {
result[item.key] = item.value;
return result;
},{}
});
return result;
}
'javascript' 카테고리의 다른 글
js 추가문법과 함수 (0) | 2022.04.14 |
---|---|
js 문법 (0) | 2022.04.13 |
js 문법 (0) | 2022.03.14 |
js (0) | 2022.02.21 |
ES6 (0) | 2022.02.10 |