首页 > 解决方案 > 如何在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在一起。

标签: javascriptarrays

解决方案


您可以使用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);


推荐阅读