我有一个数组:
const products = [
{ product: 'banana', price: 3 },
{ product: 'mango', price: 6 },
{ product: 'potato', price: ' ' },
{ product: 'avocado', price: 8 },
{ product: 'coffee', price: 10 },
{ product: 'tea', price: '' },
]
我想总结所有价格。我尝试了什么:
const sum = products.reduce(function(acc, cur){
if (Number.isInteger(cur.price))
return acc+cur.price
}, 0)
console.log(sum)
它返回未定义。我也试过没有条件,它返回一个字符串。我在哪里犯了错误?
最佳答案
如果条件不为true
,则需要返回累加器。
const
products = [{ product: 'banana', price: 3 }, { product: 'mango', price: 6 }, { product: 'potato', price: ' ' }, { product: 'avocado', price: 8 }, { product: 'coffee', price: 10 }, { product: 'tea', price: '' }],
sum = products.reduce(function(acc, cur) {
if (Number.isInteger(cur.price)) return acc + cur.price;
else return acc;
}, 0);
console.log(sum);
更短的方法有条件地添加值,最后只返回累加器。
const
products = [{ product: 'banana', price: 3 }, { product: 'mango', price: 6 }, { product: 'potato', price: ' ' }, { product: 'avocado', price: 8 }, { product: 'coffee', price: 10 }, { product: 'tea', price: '' }],
sum = products.reduce(function(acc, cur) {
if (Number.isInteger(cur.price)) acc += cur.price;
return acc;
}, 0);
console.log(sum);
关于javascript - 使用条件 : is a number? 减少方法 os 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64415597/