我有一个数组,例如
[ { key: 'NAME', value: 'JAY'},
{ key: 'AGE', value: '65'},
{ key: 'YEAR', value: '2017'},
{ key: 'PLACE', value: 'Delhi'},
{ key: 'PLACE', value: 'Mumbai'},
{ key: 'YEAR', value: '2018'}
]
想根据重复的键将其转换为以下列表
[ { key: 'NAME', value: ['JAY']},
{ key: 'AGE', value: ['65']},
{ key: 'YEAR', value: ['2017','2018']},
{ key: 'PLACE', value: ['Delhi','Mumbai']}
]
请帮助..
答案 0 :(得分:1)
您可以通过传递提供的回调函数作为参数来使用reduce
方法。
var array = [ { key: 'NAME', value: 'JAY'},
{ key: 'AGE', value: '65'},
{ key: 'YEAR', value: '2017'},
{ key: 'PLACE', value: 'Delhi'},
{ key: 'PLACE', value: 'Mumbai'},
{ key: 'YEAR', value: '2018'}
]
let result = array.reduce(function(arr, item){
let foundElem = arr.find(elem => elem.key === item.key);
if(!foundElem)
arr.push({key : item.key, value : [item.value]});
else
foundElem.value.push(item.value);
return arr;
}, []);
console.log(result);