我有一个有多个对象的数组。每个对象都有成本。我正在尝试计算所有项目的总价格。
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;
};
+=
答案 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)
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;