我有一些像这样的数组:
state = {
array: [
{
id1,
name1,
price1
},
{
id2,
name2,
price2
},
{
id3,
name3,
price3
}
]
}
然后我想对价格求和。
首先我尝试-
for (let key in arrayCopy) {
totals += this.state.array[key].price;
}
第二次我尝试过=
for (let key in arrayCopy) {
total[key] = this.state.array[key].price;
}
var totals = total.reduce((a,b) => a + b,0);
我将尝试用数字解释它。例如:
price1 = 1000
price2 = 2000
price3 = 5000
我试图通过汇总所有价格来获得总结果。
totals = price1 + price2 + price3
totals = 8000
但是我得到的结果是:
totals = 100020005000
有人可以指出我做错了吗?
答案 0 :(得分:1)
这是因为您的price
是string
而不是number
,因此您需要先将其转换为数字。
var totals = this.state.array.reduce((a,b)=>a+Number(b), 0);
答案 1 :(得分:0)
使用reduce Array原型方法就足够了
let items = [{id:1,name:'s', price:100},{id:2,name:'sew',price:50},{ id:3, name:'se',price:10}];
let sum = items.reduce((a, b) => +a + +b.price, 0);
console.log(sum);