从多个对象中添加值

时间:2016-05-11 12:24:25

标签: javascript

我有一个有多个对象的数组。每个对象都有成本。我正在尝试计算所有项目的总价格。

static calculateCosts(shoppingCart: Array<any>):number {
    let price = null;

    for (let item of shoppingCart) {
        price = item.price
    }

    console.log(price);
    return price;
};

显然,这只显示了shoppingCart中最后一项的成本。添加每个项目成本的好方法是什么?

//修改

在进一步了解一些基本的JS功能后,这看起来像一个解决方案:

static calculateCosts(shoppingCart: Array<any>):number {
    let price: number = null;

    for (let item of shoppingCart) {
        price += item.price
    }

    return price;
};

+=

3 个答案:

答案 0 :(得分:2)

您可以使用reduce功能来执行此操作。

首先,因为你知道你的数组是一个包含价格成员的对象数组,你可以输入它(我知道你使用的是TypeScript)。

然后,您可以使用数组的reduce函数来计算总数。

这是一个解决方案:

static calculateCosts(shoppingCart: Array<{price: number}>):number {
  return shoppingCart.reduce((total, item) => total + item.price, 0);
};

答案 1 :(得分:0)

我没有抓住所有这些ES6的东西,并且在我实际使用它时会担心它。但似乎在ES5 JS中,这应该是一件容易的事情。

var array = [
 {
   cost: 1.25  
 },
 {
   cost: 2.5 
 },
 {
   cost: 0.75  
 },
 {
   cost: 1.5  
 }
];

function sum(a){
  var sum = 0;
  for(var i=0;i<a.length;i++)
    sum += a[i].cost;
  return sum;
}

console.log(sum(array));

答案 2 :(得分:0)

&#13;
&#13;
var objects = [
   {id: 1, cost: 45},
   {id: 1, cost: 55},
   {id: 1, cost: 65},
   {id: 1, cost: 75}
];

var sum = 0;

objects.forEach(function(obj) {
   sum += obj.cost;
});

document.write(sum);
&#13;
&#13;
&#13;