javascript 当每个对象id属性都是唯一的[重复的]时,将一个对象数组减少到另一个数组中

ffx8fchx  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(108)

此问题在此处已有答案

Sum JavaScript object propertyA values with the same object propertyB in an array of objects(13个回答)
两年前关闭。
这篇文章是编辑并提交审查2天前.
我有一个JavaScript数组,看起来像这样

var array = [{
        id: 1,
        quantity: 2
    },
    {
        id: 2,
        quantity: 1
    },
    {
        id: 1,
        quantity: 5
    }
]

字符串
在上面的代码片段中,两个对象具有相同的id id:1。如果数组中两个或多个对象的id相同。我想把它们转换成一个对象,所有具有特定id id:1的对象的quantity属性被累加。所以响应数组应该是这样的。

var resArray = [{
        id: 1,
        quantity: 7
    },
    {
        id: 2,
        quantity: 1
    }
]

wtzytmuj

wtzytmuj1#

使用Array.reduce,您可以按id键值对数组进行分组,并可以对相同id的数量进行求和。

const array = [{
    id: 1,
    quantity: 2
  },
  {
    id: 2,
    quantity: 1
  },
  {
    id: 1,
    quantity: 5
  }
];

const reducedArr = array.reduce((acc, cur) => {
  acc[cur.id] ? acc[cur.id].quantity += cur.quantity : acc[cur.id] = cur;
  return acc;
}, {});

const output = Object.values(reducedArr);
console.log(output);

字符串

相关问题