2013-02-20 3 views
6

JavaScript Underscoreライブラリを詳しく調べてみたところ、_.reduce()(別名injectfoldlとも呼ばれます)が正しいと思っています。私の質問は次のとおりですか? = memo = 85 アンダースコア_。明確化を改善しますか?

  • memo + list[0] = memo = 6
  • memo + list[1]

    • memo開始
    • memo + list[2] =

      _.reduce([1, 2, 3, 4, 5], function(memo, num) { return memo + num; }, 5);が呼び出されると、以下のことが起きますmemo = 11

    • memo + list[3] = memo = 15
    • memo + list[4] = memo = 20

    とRAN機能が20を返す理由です。そうですか?従って_.reduceRight()は逆で、memo + list[ /* last element in array */ ]から始まりますか?

    ありがとうございました。

    よろしくお願いいたします。

  • 答えて

    11

    はい、正しいです。 reduceコールバックの最初の引数は、最後の反復(または最初の反復時のシード)から返された値を表します。

    コールバックの第2引数は、配列の現在の反復の値です。

    したがって、最初の引数は、到達しようとしている結果のアキュムレータです。すべての反復が完了すると、最終値が_.reduce関数から返されます。

    +0

    ありがとうございます。私が欲しかったものすべて。良い一日を。 – raf

    +0

    ようこそ。 –