2017-12-26 3 views
0

私はいくつかのゲッターをコーディングして、パート合計とアイテムごとの合計を計算しようとしています。しかし、array.reduceを使用するようにコードをリファクタリングしたとき、partTotalは未定義で返しました。Vuex getterとarray reduce

あなたはこの作品、なぜ私が知っているのを助けることができる:

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は「未定義」を返す):

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) 
    }, 

} 

はそれを事実とは何かを持っていますの削減の非同期関数ですか?

ありがとうございます!

答えて

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) 

サイドノート:タイプセミコロン。

+0

ニース!それは今働きます!ありがとう! –