首页 > 解决方案 > 对象数组内的计算

问题描述

我有以下这样的对象数组

let items = [
    {
        key: 1,
        name: 'abc',
        quanitity: 2,
        rate: 10
    },
    {
        key: 2,
        name: 'abc 12',
        quanitity: 4,
        rate: 14
    },
    {
        key: 3,
        name: 'abc',
        quanitity: 12,
        rate: 12
    } ]

现在我正在做的是制作一辆购物车,现在我想根据数组在底部显示总和。像这样会回来2 * 10 + 4 * 14 + 12 * 12 = totalAmount

这是我尝试使用 forEach

let dd = p.forEach((x) => {
        let totalAmount = 0;

      if (totalAmount === 0) {
        let cal = Number(x.quantity) * Number(x.rate);
        totalAmount = totalAmount + cal;
      } else {
        let cal2 = Number(x.quantity) * Number(x.rate);
        totalAmount = cal2;
      }
      console.log("cal  sdda", totalAmount);

      return totalAmount;
    });

我用过forEach,但我没有得到想要的输出,也用过reduce,但我知道那行不通。任何帮助

标签: javascriptarrays

解决方案


你可以通过.reduce这样使用来实现这一点

更新:

您可以使用Number+转换stringnumber

let items = [{key: 1,name: 'abc',quanitity: "2",rate: "10"},
              { key: 2, name: 'abc 12', quanitity: "4", rate: "14"},
              { key: 3, name: 'abc', quanitity: "12", rate: "12" }];
    
const result = items.reduce((totalAmount, {quanitity, rate}) => totalAmount + (Number(quanitity) * Number(rate)), 0);

console.log(result);

解决方案 2:使用forEach

let items = [{key: 1,name: 'abc',quanitity: "2",rate: "10"},
              { key: 2, name: 'abc 12', quanitity: "4", rate: "14"},
              { key: 3, name: 'abc', quanitity: "12", rate: "12" }];
    
let totalAmount = 0;
items.forEach(item => totalAmount += Number(item.quanitity) * Number(item.rate));
console.log(totalAmount);


推荐阅读