当我尝试对集合中的一些对象或元素求和时,我遇到了一个小问题,但是通过这种方式,就好像获得的数据被连接为string类型的字符串,结果是:< / p>
Total: 05500000005
预期结果是:
Total: 15
这是我的代码forEach
,用于介绍我的收藏夹中的元素:
let total = 0;
data.forEach(element => {
console.log("Element: ", element.cost_product);
total += element.cost_product;
});
console.log("Total: ", total)
答案 0 :(得分:3)
这是您要找的吗?
const total = [1, 2, 3].reduce((a, b) => a + b, 0);
console.log(total); // 6
就您而言,这样做更方便。
const total = [{cost_product: 1}, {cost_product: 2}, {cost_product: 5}].reduce(function (acc, obj) { return acc + obj.cost_product; }, 0);
console.log(total);
ES6
const total = [{ cost_product: 1 }, { cost_product: 2 }, { cost_product: 5 }].reduce((
acc,
obj,
) => acc + obj.cost_product,
0);
console.log(total);
如果cost_product是字符串,则可以尝试
const total = [{ cost_product: "1" }, { cost_product: "2" }, { cost_product: "5" }].reduce((
acc,
obj,
) => acc + Number(obj.cost_product),
0);
console.log(total);
有条件
const total = [{ cost_product: 1 }, { cost_product: 2 }, { cost_product: 5 }].reduce((
acc,
obj,
) => {
if (obj.cost_product >= 1 && obj.cost_product <= 4) {
return acc + Number(obj.cost_product);
}
return acc;
},
0);
console.log(total);
答案 1 :(得分:1)
我按如下所示运行代码:
let data = [{cost_product: 5},{cost_product: 1}]
let total = 0;
data.forEach(element => {
console.log("Element: ", element.cost_product);
total += element.cost_product;
});
console.log("Total: ", total)
它工作正常。检查您的cost_product类型,是否真的是数字而不是字符串。