首页 > 解决方案 > 用 forEach 对我的集合中的元素求和

问题描述

当我试图从我的集合中总结一些对象或元素时,我遇到了一个小问题,但这样就好像获得的数据被连接为字符串类型的字符串,结果是:

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)

标签: angulartypescript

解决方案


这是你要找的吗?

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);

推荐阅读