Underscore: _.chain & _.each рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдЦреЗрд▓ рд░рд╣реЗ рд╣реИрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рджрд┐рд╕ре░ 2013  ┬╖  27рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/underscore

рд╣рд╛рдп рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдЧ рд╣реИ:

  _.chain([1,2,3,4]).each(function(current){ console.log(current) }).value(); // returns undefined
  //where: 
  _.chain([1,2,3,4]).map(function(current){ return current; }).value() // returns expected. 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдВрдЬреАрд░ рд╕рдорд╛рд░реЛрд╣ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреА рд╡рд╛рдкрд╕реА рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдирд▓ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рдЙрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд┐рдирд╛ рдореНрдпреВрдЯреЗрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреНрдпрд╛ рдЕрдм рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЬрдВрдЬреАрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ? рдореИрдВ peek рддрд░рд╣ рдХреБрдЫ рдЦреЛрдЬ рд░рд╣рд╛ рдерд╛:

_.chain(myArray)
    ...
    .peek(e -> e.craftedVar = e.otherVar * 2)
    ...
    .value();

рд╕рднреА 27 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ рд╕рд╣реА рд╣реИред map , each рд░рд┐рдЯрд░реНрди рдорд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ value рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕рд░рдгреА рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ map рд╕рд╛рде рд░рд╣рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдареАрдХ рд╣реИ рддреЛ рдирдХреНрд╢рд╛, рдХреИрд╕реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ _.chain ()ред рдирд▓ (рдлрд╝рдВрдХреНрд╢рди (рдорд╛рди) {рдорд╛рди .forEach (рдлрд╝рдВрдХреНрд╢рди (рд╡рд░реНрддрдорд╛рди) {};});
рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ ...

рд╣рд╛рдВ, рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ:

_.chain([1,2,3,4])
 .tap(_.bind(console.log, console))
 .map(function(val) { return val * 2 })
 .value(); // [2,4,6,8]

рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

@xixixao each Array # forEach рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рдорд╛рди рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд╡рд╛рдкрд╕ рдЪрд╛рд╣рд┐рдП рддреЛ рдмрд╕ map ред

рдореБрдЭреЗ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЛ _.each рдЪреЗрдиреЗрдмрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред _.map рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд╕рд╛рде рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИрдВ рдЬреИрд╕реЗ рдпрд╣ рдПрдХ рд╣реА рд╕рд░рдгреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрджреНрдз рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА? рдЖрдк рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд░рдгреА рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд░рд╣реЗ рд╣реИрдВ (рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдирдХреНрд╢реЗ рдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдореВрд▓реНрдп рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╣реЛрдиреЗ рдХреА рдХреЛрдИ рдЕрдкреЗрдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛рдмрджреНрдз рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА?

рдХреНрдпреЛрдВ рдЬрдВрдЬреАрд░реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреНрдпрд╛ рдЪреЛрдЯ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ? рдпрд╣ _(collection).each(intermediateActions).filter(...) рдЬреИрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

рдореИрдВ рдПрдХ рд▓рдкреЗрдЯреА рд╣реБрдИ рд╡рд╕реНрддреБ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рджреВрдВрдЧрд╛ред

@ dw40 рд▓реЗрдХрд┐рди рдЖрдк рдЙрди рдордзреНрдпрд╡рд░реНрддреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рд▓реЗрдХрд┐рди рдЖрдк рдЙрди рдордзреНрдпрд╡рд░реНрддреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдПрдХ рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдордзреНрдпрд╡рд░реНрддреА рдХрджрдо рдХреНрдпрд╛ рд╣реИ, рдпрд╣ рдХрдИ рдЪреАрдЬреЛрдВ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, _.each рдЪреЗрдирд┐рдВрдЧ рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдордзреНрдпрд╡рд░реНрддреА рдХреЙрд▓рдмреИрдХ рдХреЛ рдПрдХ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдПрдХ рдирдИ рд╕рд░рдгреА рдмрдирд╛рдПрдВред

@ dw40 рдПрдХ рддреНрд╡рд░рд┐рдд рдкреБрд▓ рдХреЛрдбрд╝рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрдк рдорд┐рдХреНрд╕-рдЗрди рд░рд╛рдЗрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реЗрд╖-рдХреЗрд╕рд┐рдВрдЧ each рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

@ akre54 рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ each forEach each рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдореЗрд░рд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде рдерд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдореВрд▓ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рдореЗрд╢рд╛, рдЬреЛ рднреА рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ each рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред

рдЖрдк рдорд┐рдХреНрд╕-рдЗрди рд░рд╛рдЗрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рд╢реЗрд╖-рдЖрд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЙрд╕рд╕реЗ рднреА рд╕рд░рд▓ред рдмрд╕ _.each рд░рд┐рдЯрд░реНрди obj ред рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХреЗ рд╕рд╛рде рдХрдВрдкрдЯреАрдЯрд░ рддреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдпрд╣реА рдирд╣реАрдВ each рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХреЗ рд╕рд╛рде рдХрдВрдкрдЯреАрдЯрд░ рддреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдпрд╣реА рдирд╣реАрдВ each рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛:

рдореИрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЛ _.each рдХреЛ рдЪреЗрдиреЗрдмрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдпрд╣ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рдорд╛рдирддрд╛ред рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рддрд░реАрдХреЛрдВ рдореЗрдВ рдмреЗрд╣рддрд░ рджреЗрд╡ рдкреНрд░рдпреЛрдЬреНрдп рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рднрд╛рдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдирд╛рд░реЗ _.keys(...) рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдФрд░ _.every рдФрд░ _.some рдХрд╛рд░реНрдп рдпрджрд┐ рдЖрдк iterator рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ рдХрд┐ each рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдЕрдХреЗрд▓реЗ рд╣реА рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдФрд░ рд╡реНрдпрд░реНрде рдХреА рджрд▓реАрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдмреНрд░реЗрдХ)ред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣реИ рдирд╛?

diff --git a/underscore.js b/underscore.js
index 7a30b0a..2b56536 100644
--- a/underscore.js
+++ b/underscore.js
@@ -74,7 +74,7 @@
   // Handles objects with the built-in `forEach`, arrays, and raw objects.
   // Delegates to **ECMAScript 5**'s native `forEach` if available.
   var each = _.each = _.forEach = function(obj, iterator, context) {
-    if (obj == null) return;
+    if (obj == null) return obj;
     if (nativeForEach && obj.forEach === nativeForEach) {
       obj.forEach(iterator, context);
     } else if (obj.length === +obj.length) {
@@ -87,6 +87,7 @@
         if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
       }
     }
+    return obj;
   };

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣реИ рдирд╛?

рд╕рд╣реАред

рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рд▓рдп рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╛ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рд╕реЗ рд╕реБрдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдереЛрдбрд╝рд╛ рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЬрдВрдЬреАрд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, _.each рд╡рд╛рдкрд╕реА рдХрд░рдирд╛ рдПрдХ рдореВрд▓реНрдп рд╣реИ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░, рдЗрд╕рд▓рд┐рдП +1 :)

@LeonFedotov @ dw40 рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗред

@ akre54 рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ред

@ akre54 рдорд╣рд╛рди, рдзрдиреНрдпрд╡рд╛рдж!

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╣рдо рдкреВрд░реНрд╡-1.1.3 рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдП рд╣реИрдВред

1.1.3 рдХреЗ рдЬрд╛рд░реА рдиреЛрдЯреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ 3b916a2cf788a4588f08323c39786b6fb5ddbca6 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

ECMA5 рдХреЗ forEach рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдВрдЧрддрд┐ рдХреЗ рд▓рд┐рдП _.each рдЕрдм рдкреБрди: рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рд╣рд╛ред рдореБрдЭреЗ рдкрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдкрд░рд┐рдЪрд┐рдд рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдЕрдЪреНрдЫреА рдЬрдЧрд╣ред
рдлрд░рд╡рд░реА 1, 2014 11:23 PM рдкрд░, "рдбреЗрд╡рд┐рдб рдЪреЗрдореНрдмрд░реНрд╕" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╣рдо рдкреВрд░реНрд╡-1.1.3 рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯ рдЖрдП рд╣реИрдВред

1.1.3 рдХреЗ рдЬрд╛рд░реА рдиреЛрдЯреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ 3b916a2 https://github.com/jashkenas/underscore/commit/3b916a2cf788a4588f08323c397bb6fb5ddbca6 рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛
:

_.each рдЕрдм рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреБрди: рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
ECMA5 рдХреЗ forEach рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ред

рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ рдпрд╛ Gi tHubhttps рдкрд░
ред

рдХреНрдпрд╛ рдЕрдм рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЬрдВрдЬреАрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ? рдореИрдВ peek рддрд░рд╣ рдХреБрдЫ рдЦреЛрдЬ рд░рд╣рд╛ рдерд╛:

_.chain(myArray)
    ...
    .peek(e -> e.craftedVar = e.otherVar * 2)
    ...
    .value();
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕