我有一个名为orders
的数组,
const orders = [
{
name: 'iPhone 7',
price: 7199,
count: 2
},
{
name: 'iPad 2',
price: 3399,
count: 1
},
{
name: 'Macbook Pro',
price: 19888,
count: 1
},
{
name: 'Kindle Osis',
price: 2399,
count: 2
}
];
我希望通过将每个项目price
次count
加起来来计算总价格:
orders.reduce((e1, e2) => e1.price * e1.count + e2.price * e2.count);
但我得到 NaN 而不是总价,任何人都可以提供帮助?谢谢!
答案 0 :(得分:5)
您
0
作为和的初始值所以使用
orders.reduce((sum, el) => sum + el.price * el.count, 0);
答案 1 :(得分:2)
您可以使用Array#reduce
作为总和的起始值,并仅将实际值相乘。
对于值,您可以使用destructuring assignment,因为您只需要price
和count
这两个属性。
const orders = [{name: 'iPhone 7', price: 7199, count: 2}, {name: 'iPad 2', price: 3399, count: 1}, {name: 'Macbook Pro', price: 19888, count: 1}, {name: 'Kindle Osis', price: 2399, count: 2}],
total = orders.reduce((sum, { price, count }) => sum + price * count, 0);
// ^
console.log(total);
答案 2 :(得分:0)
使用
orders.reduce((accumulator, order) => accumulator + order.price * order.count, 0);
我认为你得到了减少错误的想法。第一个参数是一个累加器(之前所有的reduce迭代的结果),因此不需要将它乘以你的情况中的任何东西。您只需计算当前订单的价格并将其添加到累加器。
0
是累加器在第一次迭代期间使用的初始值。