javascript - 使用条件 : is a number? 减少方法 os 对象数组

标签 javascript arrays reduce

我有一个数组:

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/

相关文章:

collections - Rust 中 Kotlin 的 `reduce` 操作的替代方案是什么?

javascript - 使用 vanilla JS 将 rel ="noopener noreferrer nofollow"添加到所有外部链接的最佳方法

javascript - 将链接插入 Google Charts api 数据?

arrays - 为什么在使用指针访问未对齐的 uint16 数组时抛出 "alignment exception"而在使用下标访问数组时不抛出?

c - 移动字符串数组中的元素并用零填充

javascript减少功能

javascript - 理解 Eloquent Javascript 的 Reduce 函数

javascript - 谷歌地图的 AngularJS 路由

javascript - 如何更新这样的嵌套状态?

ios - UITableView 数组