javascript - 对象数组内的计算
问题描述
我有以下这样的对象数组
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
,但我知道那行不通。任何帮助
解决方案
你可以通过.reduce
这样使用来实现这一点
更新:
您可以使用Number
或+
转换string
为number
。
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);
推荐阅读
- vb.net - Visual Basic - StreamWriter - 如果所述行不为空,如何跳到下一行
- icons - 在 Icomoon 中堆叠图标,如 Font Awesome 中的 fa-stack
- c# - 在 C# 中按标签对 ListView 进行排序
- ruby - Ruby:如何标记现有的 AWS VPC
- c++ - 将 uint8_t 数组转换为字符串
- ffmpeg - 如何在具有多个输入的硬件加速上使用 ffmpeg?
- laravel - 从控制器函数中获取特定值
- javascript - Javascript正则表达式选择没有特殊字符的单词
- javascript - jQuery 没有找到 Django 返回的“span”元素
- artifactory - 使用远程存储库升级 Artifactory 设置