我正在尝试编写一些吸气剂来计算零件总数和每件商品总数。但是当我重构代码以使用array.reduce时,partTotal返回undefined。
你能帮我理解为什么会这样吗:
getters: {
calcPart: (state, getters) => part => {
let total = 0.0
for (let i = 0, length = part.items.length; i < length; i++) {
total += getters.calcItem(part.items[i])
}
return total
},
calcItem: state => item => {
return parseFloat(item.value1) * parseFloat(item.value2)
},
}
为什么这不起作用(calcPart返回“undefined”):
getters: {
calcPart: (state, getters) => part => {
return part.items.reduce((acc, item) => { acc + getters.calcItem(item) }, 0.0)
},
calcItem: state => item => {
return parseFloat(item.value1) * parseFloat(item.value2)
},
}
与reduce的事实有关的是异步函数吗?
提前致谢!
答案 0 :(得分:0)
你需要在大括号内返回。
更改此行:
return part.items.reduce((acc, item) => { acc + getters.calcItem(item) }, 0.0)
对此:
return part.items.reduce((acc, item) => { return acc + getters.calcItem(item) }, 0.0)
您还可以通过删除大括号来避免未定义的结果:
return part.items.reduce((acc, item) => acc + getters.calcItem(item), 0.0)
旁注:输入分号。