在工作期间,我对此任务有疑问,这是我的数据:

var order = [
      {area: "RFCC",ru: "R401",tot: 3,unit: "OFFSITE"},
      {area: "RFCC",ru: "R401",tot: 1,unit: "RCU"}];


我希望结果应该是这样的:

var order = [
    {area:["RFCC","RFCC"],ru:["R401","R401"],tot:[4],unit:["OFFSITE","RCU"]}]


有人知道解决方案吗?提前致谢。

最佳答案

您可以通过以下方法使用Array#reduce()实现此目的:



var order = [
      {area: "RFCC",ru: "R401",tot: 3,unit: "OFFSITE"},
      {area: "RFCC",ru: "R401",tot: 1,unit: "RCU"}
];

var result = order.reduce((result, item) => {

  const { area, ru, tot, unit } = result[0]

  area.push( item.area );
  ru.push( item.ru );
  unit.push( item.unit );
  tot[0] = parseInt(tot[0]) + parseInt(item.tot);

  return result

}, [{ area : [], ru : [], tot: [ 0 ], unit : [] }])

console.log(result);

关于javascript - 按相似数据分组,但保留键和值javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53255827/

10-11 12:17