gpt4 book ai didi

javascript - 在具有相同 ID 的数组中添加/求和多个值

转载 作者:行者123 更新时间:2023-11-30 14:06:14 25 4
gpt4 key购买 nike

假设我有以下数组。

     [{idProduct:1, unitCost:400},
{idProduct:1, unitCost:160},
{idProduct:1, unitCost:46},
{idProduct:2, unitCost:200},
{idProduct:2, unitCost:40}

我似乎找不到添加产品 1 的单位成本然后切断以添加产品 2 的其他单位成本等等的方法......我实际上想将它附加到谷歌电子表格中的不同行但我首先要计算它。

我尝试了一些 for/if 循环,但我总是以所有产品的总成本结束,而不仅仅是单个产品。

这给出了所有 id 的总成本。当我在其中放置一个 if 时,我不确定如何比较两个 id,如果我想重置总和,我应该将 totalCost 设置回 0

  for (var a = 0; a < arr.length ; a++) {
totalCost= totalCost+ arr[a].unitCost;
}

我尝试了一个 if 和 break 但这似乎也不起作用,想尝试 promises 但我不确定这是否有帮助。我还尝试设置另一个,用于将下一个 ID 与我当前使用的 ID 进行比较,但这似乎使事情变得复杂,而且我得到的数字是错误的。

我也试过

  for (var a = 0; a < arr.length ; a++) {
if(arr[a].idProduct === arr[a+1].idProduct){
totalCost= totalCost+ arr[a].unitCost;
}
}

当然,在最后一个 id 上,它会将它与 undefined 进行比较,因为 a+1 比数组的长度长。

老实说,我现在已经精疲力尽了,我很确定这是一个简单的解决方案,但我真的不知道还能做什么

最佳答案

您可以使用 reduce 汇总数组并将值添加到使用 idProduct 作为键的对象中。使用 Object.values 将对象转换为数组。

let arr = [{"idProduct":1,"unitCost":400},{"idProduct":1,"unitCost":160},{"idProduct":1,"unitCost":46},{"idProduct":2,"unitCost":200},{"idProduct":2,"unitCost":40}]

let result = Object.values(arr.reduce((c, {idProduct,unitCost}) => {
c[idProduct] = c[idProduct] || {idProduct,unitCost: 0};
c[idProduct].unitCost += unitCost;
return c;
}, {}));

console.log( result );


或者您可以使用 idProduct 作为键,将总和作为值,例如:

let arr = [{"idProduct":1,"unitCost":400},{"idProduct":1,"unitCost":160},{"idProduct":1,"unitCost":46},{"idProduct":2,"unitCost":200},{"idProduct":2,"unitCost":40}]

let result = arr.reduce((c, {idProduct,unitCost}) => {
c[idProduct] = c[idProduct] || 0;
c[idProduct] += unitCost;
return c;
}, {});

console.log(result);

关于javascript - 在具有相同 ID 的数组中添加/求和多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55330906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com