【发布时间】:2021-07-05 10:16:59
【问题描述】:
我正在尝试使用 filter 和 reduce 来获取 Bob 购买的总价格,以便对我正在做的高阶函数进行一些练习。 给了我
const purchases = [{"owner":"Barry","price":103},{"owner":"Bob","price":75},
{"owner":"Bob","price":73},{"owner":"Barry","price":57},{"owner":"Barry","price":128},
{"owner":"Bob","price":119},{"owner":"Barry","price":133},{"owner":"Barry","price":27},
{"owner":"Barry","price":138},{"owner":"Bob","price":68},{"owner":"Bob","price":50},
{"owner":"Barry","price":9},{"owner":"Bob","price":123},{"owner":"Bob","price":135},
{"owner":"Barry","price":30},{"owner":"Barry","price":129},{"owner":"Barry","price":38},
{"owner":"Bob","price":133},{"owner":"Barry","price":109},{"owner":"Bob","price":115}]
使用高阶方法创建得到bobsTotal的总和。
这就是我的想法。我能够将鲍勃的购买过滤到一个数组中,但我现在无法获得总价。出于日志目的,我现在已将 reduce 部分注释掉。
let bobsTotal = purchases.filter(total=>total=purchases.owner="Bob")//.reduce((total, price) => total + price)
console.log(bobsTotal)
任何建议都会很棒,或者任何其他方法都会很棒。
【问题讨论】:
-
应该是
purchases.filter(purchase => purchase.owner === "Bob") -
对于
reduce部分,请注意第二个参数——它是一个对象,而不是一个数字 -
common mistake 将是
.reduce((total, price) => total.price + price.price)。但是为什么你认为price属性会以某种方式在.reduce((total, price) => total + price)中自动访问?.reduce((total, {price}) => total + price, 0)会起作用。 -
感谢您的建议!看到我犯的小错误非常有帮助。
标签: javascript filter reduce higher-order-functions