JS从多维数组中删除重复项

时间:2021-07-18 08:43:30

标签: javascript multidimensional-array

我想在标签相同的情况下将对象减少到一,并求和它的值,但是需要避免标签和值的值都相同的对象,示例如下:

let arr = [
   {
     label: "▲",
     value: 5
   },
   {
     label: "▲",
     value: 10
   },
   {
     label: "■",
     value: 13
   },
   {
     label: "●",
     value: 4
   },
   {
     label: "■",
     value: 6
   },
   {
     label: "■",
     value: 6
   },
]
let expectedResult = [
   {
     label: "▲",
     value: 15
   },
   {
     label: "■",
     value: 19
   },
   {
     label: "●",
     value: 4
   },
]

我尝试使用 let newArr = [...new Set(arr)],但它返回了相同的数组。

1 个答案:

答案 0 :(得分:1)

您可以利用 Array.reduceObject.values 来实现预期的输出。

let arr = [{label:"▲",value:5},{label:"▲",value:10},{label:"■",value:13},{label:"●",value:4},{label:"■",value:6},{label:"■",value:6},]

const getReducedData = (data) => Object.values(data.reduce((acc, obj) => {
  if(acc[obj.label]) {
    acc[obj.label].value += obj.value;
  } else {
    acc[obj.label] = { ...obj }
  }
  return acc;
}, {}));

console.log(getReducedData(arr));
.as-console-wrapper {
  max-height: 100% !important;
}

相关问题