使用JavaScript数组中的条件检查并转换重复的对象

时间:2018-10-16 08:26:24

标签: javascript arrays node.js

我有一个数组,例如

[ { 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']}
]

请帮助..

1 个答案:

答案 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);