javascript - 循环遍历数组的对象属性并进行比较
问题描述
我有一个包含多个属性的对象数组,看起来像这样:
[
{
"title" = "Test",
"prop1" = 4,
"prop2" = 6
},
{
"title" = "Test2",
"prop1" = 5,
"prop2" = 7
},
{
"title" = "Test",
"prop1" = 6,
"prop2" = 14
}
]
我想做的,是……</p>
- 循环遍历对象
- 比较标题,以后每个标题只有一个输出
- 总结同名对象的属性
所以最后我的输出会是……</p>
- 测试, 10, 20
- 测试2、5、7
我尝试将值存储在变量中,比较这些变量,但这仅适用于两组数据,在我的情况下,也可以有五组、十组或 15 组具有相同标题的数据。
任何帮助表示赞赏,谢谢!:)
附加信息:我需要按名称访问属性,例如 data[1]['title']
解决方案
我们可以使用来累积数组的已处理条目,并且通过处理我的意思是通过使用和总结除以下属性之外的属性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);
推荐阅读
- angular4-forms - 角度4如何防止图像上传后重新加载页面
- python - 如何替换numpy数组每一行中的N个最小元素?
- python - SciPy - from_rotvec() 不带关键字参数
- javascript - 是否可以在 mapbox 中添加多个图像?
- python - shuffle函数中随机选位交换的原理是什么
- java - 如何在 XML 数字签名中添加 QualifyingProperties - Java
- java - 爪哇 | Stripe 客户端不使用连接池?
- r - R错误:未使用的参数(measures = list(“f1”,FALSE等)
- p5.js - 使用 p5.js 播放视频后显示按钮
- tensorflow-datasets - 从打乱的目录中构造 tf.data.Dataset;每个目录中并行文件中的数据点