forEach, map, reduce로 파싱하기

Chris·2020년 3월 9일
0

출처: 두잇! 리액트 프로그래밍 정석

for문으로 파싱하기

const qs = 'banana=19&apple=20&orange=30';

function parse(qs) {
    var queryString = qs.substr(1);
    var chunks = qs.split('&');
    var result = {};
    for (var i = 0; i < chunks.length; i++) {
        var parts = chunks[i].split('=');
        var key = parts[0];
        var value = parts[1];
        result[key] = value;
    }
    return result;
}

console.log(parse(qs));

forEach로 파싱하기

forEach로 구조분해할당을 이용하여 바로 분리함

const qs = 'banana=19&apple=20&orange=30';

function parse(qs) {
    const queryString = qs.substr(1);
    const chunks = qs.split('&');
    let result = {};
    chunks.forEach(chunk => {
        const [ key, value ] = chunk.split('=');
        result[key] = value;
    });
    return result;
}

console.log(parse(qs));

map()으로 파싱하기

기존 배열을 새로운 배열로 변환

const qs = 'banana=19&apple=20&orange=30';

function parse(qs) {
    const queryString = qs.substr(1);
    const chunks = qs.split('&');
    const result = chunks.map(chunk => {
        const [ key, value ] = chunk.split('=');
        return { key: key, value: value};
    });
    return result;
}

console.log(parse(qs));

reduce()로 파싱하기

배열을 다른 자료형으로 변환

const qs = 'banana=19&apple=20&orange=30';

function parse(qs) {
    const queryString = qs.substr(1);
    const chunks = qs.split('&');
    return chunks 
        .map(chunk => {
            const [ key, value ] = chunk.split('=');
            return { key: key, value: value};
        })
        .reduce((result, item) => {
            result[item.key] = item.value;
            return result;
        }, {});
}

console.log(parse(qs));
profile
올드보이 코더

0개의 댓글