Vuex getter和数组减少

时间:2017-12-26 12:35:46

标签: javascript vuejs2

我正在尝试编写一些吸气剂来计算零件总数和每件商品总数。但是当我重构代码以使用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的事实有关的是异步函数吗?

提前致谢!

1 个答案:

答案 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)

旁注:输入分号。