2013-02-20 2 views
6

Ho appena iniziato a esplorare la libreria JavaScript di Underscore in modo più approfondito e voglio semplicemente chiarire cosa penso che lo (noto anche come inject e foldl) sia corretto. La mia domanda è: è il sotto giusto?Sottolineatura del chiarimento _.Risultato?

Quando _.reduce([1, 2, 3, 4, 5], function(memo, num) { return memo + num; }, 5); viene chiamato, avviene quanto segue:

  • memo parte da 5
  • memo + list[0] = memo = 6
  • memo + list[1] = memo = 8
  • memo + list[2] = memo = 11
  • memo + list[3] = memo = 15
  • memo + list[4] = memo = 20

Ed è per questo che la funzione di corse torna 20. È giusto? E quindi _.reduceRight() è il contrario e inizia da memo + list[ /* last element in array */ ]?

Grazie.

Saluti.

risposta

11

Sì, è corretto. Il primo argomento della callback reduce rappresenta il valore restituito dall'ultima iterazione (o il seme nella prima iterazione).

Il secondo argomento del callback è il valore dell'iterazione corrente della matrice.

Come tale, il primo argomento è un accumulatore di qualsiasi risultato si sta tentando di raggiungere. Il valore finale viene restituito dalla funzione _.reduce quando tutte le iterazioni sono complete.

+0

Grazie, così tanto; tutto quello che volevo. Buona giornata. – raf

+0

Prego. –