繁体   English   中英

如何计算 JavaScript 中对象数组中值的总和?

[英]How to count the sum of values in an array of objects in JavaScript?

这是一项如此简单的任务,但不知何故我被卡住了。 我有一系列产品项目的对象,如下所示:

[{id: 1, price: 30, quantity: 2}, {id: 2, price: 20, quantity: 4}, {id: 3, price: 10, quantity: 2}]

我需要计算所有物品的总价,应该是:特定产品的价格乘以数量,与以前的产品相同。 示例:(30*2)+(20*4)+(10*2)

我的代码如下所示:

    items.forEach(function (item) {
           let sum = item.price * item.quantity;
           console.log(sum);
});

输出看起来像:

60
80
20

但是我需要计算应该是 160 的总数并将其呈现到页面上,但不知何故我无法弄清楚如何做到这一点

Array.prototype.reduce()方法最适合这样的操作(总和)。

在我下面的回答中, sum是累加器,最初设置为0 累加器是先前由回调返回的值。 { price, quantity }是当前值的对象析构

 const sumTotal = arr => arr.reduce((sum, { price, quantity }) => sum + price * quantity, 0) const data = [ { id: 1, price: 30, quantity: 2 }, { id: 2, price: 20, quantity: 4 }, { id: 3, price: 10, quantity: 2 }, ] const total = sumTotal(data) console.log(total) // 160

下面是一个类似的例子

你快要得到答案了。 我稍微修改了您的代码并获得了预期的结果。 见下文。

 const items = [{id: 1, price: 30, quantity: 2}, {id: 2, price: 20, quantity: 4}, {id: 3, price: 10, quantity: 2}]; const sumItems = () => { let sum = 0; items.forEach(function(item) { let calculation = item.price * item.quantity; sum += calculation; }) console.log(sum); }; sumItems();

 let items = [ {id: 1, price: 30, quantity: 2}, {id: 2, price: 20, quantity: 4}, {id: 3, price: 10, quantity: 2} ] let total = items.reduce((sum,item) => sum + item.price * item.quantity, 0); console.log(total);

 var products =[{id: 1, price: 30, quantity: 2}, {id: 2, price: 20, quantity: 4}, {id: 3, price: 10, quantity: 2}] console.log(products.map(x=> x.price*x.quantity).reduce((a, b) => a + b, 0))

如果您可以使用外部库,我建议使用lodash库中sumBy方法

例子:

_.sumBy(items, function(item) { return item.price * item.quantity; });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM