javascript - 如何在Javascript中组合具有相同值的数组
问题描述
我有以下数组:
0: {x: "/", y: 8}
1: {x: "/a", y: 7}
2: {x: "/a", y: 2}
3: {x: "/", y: 1}
我怎样才能把它变成:
0: {x: "/", y: 9}
1: {x: "/a", y: 9}
相同的 X 值加上它们的 Y 值。
它应该只查找 的相同值X
,如果它们相同,则将它们组合起来并将它们加Y
在一起。
解决方案
您可以使用Array#reduce
对象来存储每个x
.
let arr = [{x: "/", y: 8},{x: "/a", y: 7},{x: "/a", y: 2},{x: "/", y: 1}];
let res = Object.values(arr.reduce((acc,{x,y})=>{
(acc[x] = acc[x] || {x, y:0}).y += y;
return acc;
}, {}));
console.log(res);
推荐阅读
- amazon-web-services - AWS S3 或 Cloudfront 访问被拒绝 ::: 如果在包含路径的 url 的浏览器上刷新(即 domain.com/subdirectoryname)
- javascript - 使用ajax将变量从Jquery传递到php
- javascript - 打开副本时关闭上一个选项卡
- reactjs - 单击时更改组件的样式 - 反应钩子状态
- swift - 用于身份验证的 Firebase 动态链接
- python - 如何通过单击同一行上的 URL 将所有内容从特定行传输到另一个页面?
- deep-learning - 在张量流中我得到了这个错误:“与层不兼容::预期 min_ndim=2,发现 ndim=1。收到完整形状:(32,)
- mongodb - 运行mongo命令时连接失败
- mongodb - MongoDB:可以排序和限制利用分片键吗?
- python - 在 Python 中用另一个类对象定义一个类