[자바스크립트]JSON 합치기 (Merge)
다음과 같은 JSON이 있을때 같이 key값 끼리 array로 합치는 방법
[{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"array_key": ["array1", "array2", "array3"]
}, {
"key1": "value1_1",
"key2": "value2_1",
"key3": "value3_1",
"array_key": ["array1_1", "array2_1", "array3_1", "array4"]
}, {
"key1": "value1_last",
"key2": "value2_last",
"key3": "value3_last",
"array_key": ["array1_last"]
}]
javascript의 concat과 reduce 함수를 사용하면 된다.
array.reduce(callback, [,initialvalue])
요소 |
정의 |
필수 여부 |
array |
배열 객체 |
필수 |
callback |
최대 파라메터를 4개 까지 가지고 있는 함수 |
필수 |
initialvalue |
누적을 시작하는 초기값을 설정 할 수 있음 |
선택 |
array.concat([item1,[item2...[itemN]]])
var data = [{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"array_key": ["array1", "array2", "array3"]
}, {
"key1": "value1_1",
"key2": "value2_1",
"key3": "value3_1",
"array_key": ["array1_1", "array2_1", "array3_1", "array4"]
}, {
"key1": "value1_last",
"key2": "value2_last",
"key3": "value3_last",
"array_key": ["array1_last"]
}];
var result = data.reduce(function(r, e) {
return Object.keys(e).forEach(function(k) {
if(!r[k]) r[k] = [].concat(e[k])
else r[k] = r[k].concat(e[k])
}), r
}, {});
console.log(result);
그럼 다음과 같은 결과를 얻을 수 있다.
[{
"key1" : ["value1", "value1_1", "value1_last"],
"key2" : ["value2", "value2_1", "value2_last"],
"key3" : ["value3", "value3_1", "value3_last"],
"array_key" : ["array1", "array2", "array3", "array1_1", "array2_1", "array3_1", "array4", "array1_last"]
}]
예제를 직접 실행하면 다음과 같이 볼 수 있다.
'HTML+CSS+자바스크립트' 카테고리의 다른 글
[자바스크립트]문자열에서 문자 포함 여부 (1) | 2017.12.07 |
---|---|
[javascript] 리다이렉트 하는 방법 (0) | 2017.12.06 |
[jQuery]ajax 예제 (0) | 2017.12.03 |
자바스크립트 URL 인코딩 (0) | 2017.11.28 |
자바스크립트를 이용한 체크박스 컨트롤 (0) | 2017.11.27 |