遍历数组的对象属性并进行比较

时间:2019-08-09 08:18:54

标签: javascript arrays loops object

我有一个包含多个属性的对象数组,看起来像这样:

[
  {
    "title" = "Test",
    "prop1" = 4,
    "prop2" = 6
  },
  {
    "title" = "Test2",
    "prop1" = 5,
    "prop2" = 7
  },
  {
    "title" = "Test",
    "prop1" = 6,
    "prop2" = 14
  }
]

我想做的是...

  • 遍历对象
  • 比较标题,以后每个标题只有一个输出
  • 总结具有相同标题的对象的属性

所以最终我的输出将类似于...

  • 测试10、20
  • Test2、5、7

我试图将值存储在变量中,比较这些变量,但这仅适用于两组数据,在我的情况下,也可能有五,十或十五组具有相同标题的数据。

任何帮助表示感谢,谢谢! :)

其他信息:我需要按名称访问属性,例如 data[1]['title']

1 个答案:

答案 0 :(得分:1)

我们可以使用Array.prototype.reduce来累积数组的已处理条目,通过处理,我的意思是通过使用title来找到共享相同Array.prototype.findIndex的元素,并对除title

const data = [
  {
    "title" : "Test",
    "prop1" : 4,
    "prop2" : 6
  },
  {
    "title" : "Test2",
    "prop1" : 5,
    "prop2" : 7
  },
  {
    "title" : "Test",
    "prop1" : 6,
    "prop2" : 14
  }
];
const out = data.reduce((r, e) => {
  let idx = r.findIndex(o => e.title === o.title);
  if(idx >= 0 ){
    r[idx].prop1 += e.prop1;
    r[idx].prop2 += e.prop2;
  }else{
    r.push(e);
  }
  return r;
}, []);
console.log(out);