рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рд╕ рдлрд░реНрдбрд┐рдирдВрдбреА рдХреЗ рд▓реЗрдЦ "рдлрд╛рдЗрд╡ рдЗрдВрдЯрд░реЗрд╕реНрдЯрд┐рдВрдЧ рддрд░реАрдХреЗ рдЯреВ рдпреВрдЬ рдПрд░реЗ.реНрд░реЗрдбреНрдпреВрд╕ () (рдПрдВрдб рд╡рди рдмреЛрд░рд┐рдВрдЧ рд╡реЗ) рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ ред
рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдЖрдзреБрдирд┐рдХ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ, рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдореБрд╢реНрдХрд┐рд▓ рдЬреЛ рдореБрдЭреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рд╡рд╣ рдерд╛ Array.reduce ()ред
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рд░рд▓, рдЙрдмрд╛рдК рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рдХрдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдкрдиреА рдорд╛рдореВрд▓реА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, Array.reduce () рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓ рдХреЗ рдЖрдкрдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд▓рдЪреАрд▓рд╛ рдЬреЛрдбрд╝ рд╣реИред
рдЖрдЬ, рдЖрдЗрдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рдЖрдк Array.reduce () рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреИрд╕реЗ Array.reduce () рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХ рдирдИ рд╕рд░рдгреА рд▓реМрдЯрд╛рддреА рд╣реИрдВред Array.reduce () рд╡рд┐рдзрд┐ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╣реИред рд╡рд╣ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ рд╕рд░рдгреА рд▓реЗрдирд╛ рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рдореВрд▓реНрдп рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рдорд╛рди рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рд╡рд╕реНрддреБ рдпрд╛ рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╣рдореЗрд╢рд╛ рдЪрдХрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд▓рдЪреАрд▓рд╛ рд╣реИ!
рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕
Array.reduce () рджреЛ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ: рдХреЙрд▓рдмреИрдХ рд╡рд┐рдзрд┐, рдЬрд┐рд╕реЗ рдПрд░реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп initialValueред
рдХреЙрд▓рдмреИрдХ рджреЛ рддрд░реНрдХ рднреА рд▓реЗрддрд╛ рд╣реИ: рд╕рдВрдЪрд╛рдпрдХ, рдЬреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрдпреБрдХреНрдд рдореВрд▓реНрдп рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдЖрдЗрдЯрдо рд╡рд░реНрддрдорд╛рдирд╡реНрдпреВ рд▓реВрдк рдореЗрдВ рд╣реИред рдЖрдк рдЬреЛ рднреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реВрдк рдореЗрдВ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЪрд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рдкрд╣рд▓реЗ рд▓реВрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
var myNewArray = [].reduce(function (accumulator, current) { return accumulator;}, starting); }, starting);
рдЖрдЗрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред
var myNewArray = [].reduce(function (accumulator, current) { return accumulator;}, starting);
1. рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдпреЛрдЧ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред Array.forEach () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдРрд╕рд╛ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
var total = 0; [1, 2, 3].forEach(function (num) { total += num; });
рдпрд╣ Array.reduce () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреНрд▓рд┐рдЪ рд╣реИред рд╢рдмреНрдж "рд╕рдВрдЪрд╛рдпрдХ" рднреНрд░рд╛рдордХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдо рдЗрд╕реЗ "рдпреЛрдЧ" рдХрд╣реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред
var total = [1, 2, 3].reduce(function (sum, current) { return sum + current; }, 0); 0 .
рдХреЙрд▓рдмреИрдХ рдореЗрдВ, рд╣рдо рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рдЙрд╕ рд░рд╛рд╢рд┐ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдкрд╣рд▓реЗ рдЪрдХреНрд░ рдореЗрдВ 0 рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рд╣реИ, рдлрд┐рд░ 1 (рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп 0 рдкреНрд▓рд╕ рддрддреНрд╡ рдореВрд▓реНрдп 1), рдлрд┐рд░ 3 (рдХреБрд▓ рдореВрд▓реНрдп 1 рдкреНрд▓рд╕ рддрддреНрд╡ рдореВрд▓реНрдп 2) рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
2. рдПрдХ рдХрджрдо рдореЗрдВ Array.map () рдФрд░ Array.filter () рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣реЙрдЧрд╡рд░реНрдЯреНрд╕ рдореЗрдВ рдХрдИ рдЬрд╛рджреВрдЧрд░ рд╣реИрдВред
var wizards = [ { name: 'Harry Potter', house: 'Gryfindor' }, { name: 'Cedric Diggory', house: 'Hufflepuff' }, { name: 'Tonks', house: 'Hufflepuff' }, { name: 'Ronald Weasley', house: 'Gryfindor' }, { name: 'Hermione Granger', house: 'Gryfindor' }];
рд╣рдо рдПрдХ рдирдИ рд╕рд░рдгреА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╣рд╛рдлрд╝рд▓рдлрд╝рдлрд╝ рдХреЗ рд╕реНрд╡рд╛рдореА рдХреЗ рдирд╛рдо рд╣реЛрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ Array.filter () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЙрди рдЬрд╛рджреВрдЧрд░реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдШрд░ рдкрд░ рдПрдХ Hufflepuff рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдлрд┐рд░ рд╣рдо Array.map () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╢реЗрд╖ рд╕реНрд╡рд╛рдореА рдХреЗ рд▓рд┐рдП рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИред
// var hufflepuff = wizards.filter(function (wizard) { return wizard.house === 'Hufflepuff'; }).map(function (wizard) { return wizard.name; });
Array.reduce () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдПрдХ рдкрд╛рд╕ рдореЗрдВ рдПрдХ рд╣реА рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА ([]) рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рд╕ рдкрд░, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рдЬрд╝рд╛рд░реНрдб .рд╣рд╛рдЙрд╕ рдПрдХ рд╣рдлрд▓рдкрдл рд╣реИред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЗрд╕реЗ newArr (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдорд╛рд░рд╛ рд╕рдВрдЪрд╛рдпрдХ) рдкрд░ рднреЗрдЬреЗрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреБрдЫ рди рдХрд░реЗрдВред
рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЕрдЧрд▓реЗ рдкрд╛рд╕ рдореЗрдВ рд╕рдВрдЪрд╛рдпрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП newArr рд▓реМрдЯрд╛рдПрдВред
// var hufflepuff = wizards.reduce(function (newArr, wizard) { if (wizard.house === 'Hufflepuff') { newArr.push(wizard.name); } return newArr; }, []);
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
3. рд╕рд░рдгреА рд╕реЗ рдПрдХ рдЪрд┐рд╣реНрди рдмрдирд╛рдПрдБ
рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдЕрдЧрд░ рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рд╣рдлрд▓рдкрдл рдореЗрдВ рд╕реНрд╡рд╛рдореА рдХреА рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реВрдЪреА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдорд╛рд░реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ Array.reduce () рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ ('') рдкрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ html рдХрд╣реЗрдВред
рдЕрдЧрд░ рд╡рд┐рдЬрд╝рд╛рд░реНрдб.рд╣рд╛рдЙрд╕ рд╣рдлрд▓рдкрдл рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рд╣рдо рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдФрд░ рдирд╛рдо рд╕реВрдЪреА рддрддреНрд╡реЛрдВ (рд▓реА) рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ html рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдлрд┐рд░ рдЕрдЧрд▓реЗ рд▓реВрдк рдореЗрдВ HTML рдХреЛ рд╕рдВрдЪрд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдПрдВред
// var hufflepuffList = wizards.reduce(function (html, wizard) { if (wizard.house === 'Hufflepuff') { html += '<li>' + wizard.name + '</li>'; } return html; }, '');
Array.reduce () рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ рдЬреЛрдбрд╝реЗрдВред рдЕрдм рдЖрдк DOM рдореЗрдВ рдорд╛рд░реНрдХрдЕрдк рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
// var hufflepuffList = '<ul>' + wizards.reduce(function (html, wizard) { if (wizard.house === 'Hufflepuff') { html += '<li>' + wizard.name + '</li>'; } return html; }, '') + '</ul>';
рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
4. рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдорд╛рди рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдирд╛
рд▓реЙрд╢ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдЧреНрд░реБрдкрдмреА () рдкрджреНрдзрддрд┐ рд╣реИ рдЬреЛ рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдорд╛рдирджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░рддреА рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдХрдИ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЙрдирдХреЗ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд▓реЙрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
var numbers = [6.1, 4.2, 6.3]; // returns {'4': [4.2], '6': [6.1, 6.3]} _.groupBy(numbers, Math.floor);
рдпрджрд┐ рд╢рдмреНрджреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдЙрдирдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред
var words = ['one', 'two', 'three']; // returns {'3': ['one', 'two'], '5': ['three']} _.groupBy(words, 'length');
Array.reduce () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ GroupBy () рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдирд╛
рдЖрдк Array.reduce () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рдореВрд╣ рдмрдирд╛рддреЗ рд╣реИрдВ (), рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЫрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдФрд░ рдорд╛рдирджрдВрдб рд▓реЗрддрд╛ рд╣реИред GroupBy () рдХреЗ рдЕрдВрджрд░, рд╣рдо рдЕрдкрдиреЗ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП Array.reduce () рдЪрд▓рд╛рдПрдВрдЧреЗ, рдПрдХ рдЦрд╛рд▓реА рд╡рд╕реНрддреБ ({}) рдХреЛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред
var groupBy = function (arr, criteria) { return arr.reduce(function (obj, item) { // Some code will go here... }, {}); };
Array.reduce () рдХреЗ рдЕрдВрджрд░, рд╣рдо рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рдирджрдВрдб рдПрдХ рддрддреНрд╡ рдпрд╛ рдХрд┐рд╕реА рддрддреНрд╡ рдХреА рд╕рдВрдкрддреНрддрд┐ рдкрд░ рд▓рд╛рдЧреВ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдпрд╛ рдирд╣реАрдВред рддрдм рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рд╡рд░реНрддрдорд╛рди рддрддреНрд╡ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИред
рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрднреА рддрдХ рдЗрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ [рд╕рдВрдкрддреНрддрд┐] рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдЕрдВрдд рдореЗрдВ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдЧрд▓реЗ рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЪрд╛рдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдПрдВред
var groupBy = function (arr, criteria) { return arr.reduce(function (obj, item) { // , // var key = typeof criteria === 'function' ? criteria(item) : item[criteria]; // , . if (!obj.hasOwnProperty(key)) { obj[key] = []; } // obj[key].push(item); // return obj; }, {});};
рдПрдХ рдкреВрд░реНрдг рд╕рд╣рд╛рдпрдХ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдкреНрд░рджрд░реНрд╢рдиред
рдЙрдирдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдЯреЙрдо рдмреНрд░реЗрдорд░ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╡реЗрдирд┐рд▓рд╛ рдЬреЗрдПрд╕ рдЯреВрд▓рдХрд┐рдЯ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
5. рджреЛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛
рдЬрд╛рджреВрдЧрд░реЛрдВ рдХреА рд╣рдорд╛рд░реА рд╕реВрдЪреА рдХреЛ рдпрд╛рдж рдХрд░реЗрдВред
var wizards = [ { name: 'Harry Potter', house: 'Gryfindor' }, { name: 'Cedric Diggory', house: 'Hufflepuff' }, { name: 'Tonks', house: 'Hufflepuff' }, { name: 'Ronald Weasley', house: 'Gryfindor' }, { name: 'Hermione Granger', house: 'Gryfindor' }];
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдПрдХ рдЕрд▓рдЧ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдерд╛ - рдПрдХ рдШрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЬрд╛рджреВрдЧрд░ рджреНрд╡рд╛рд░рд╛ рдЕрд░реНрдЬрд┐рдд рдЕрдВрдХред
var points = { HarryPotter: 500, CedricDiggory: 750, RonaldWeasley: 100, HermioneGranger: 1270 };
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЗ рдбреЗрдЯрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЗ рджреЛрдиреЛрдВ рд╕реЗрдЯ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?
Array.reduce () рд╡рд┐рдзрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИ!
var wizardsWithPoints = wizards.reduce(function (arr, wizard) { // points, // var key = wizard.name.replace(' ', ' '); // , , // 0. if (points[key]) { wizard.points = points[key]; } else { wizard.points = 0; } // wizard . arr.push(wizard); // . return arr; }, []);
рдПрдХ рд╕рд░рдгреА рдореЗрдВ рджреЛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг ред
6. рджреЛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдорд┐рд▓рд╛рдирд╛
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рджреЛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдирд╛рдо рдХреБрдВрдЬреА рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдШрд░ рдФрд░ рдЪрд╢реНрдорд╛ рдЧреБрдг рд╣реИрдВ? рдлрд┐рд░, Array.reduce () рд╡рд┐рдзрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рд╣реИред
var wizardsAsAnObject = wizards.reduce(function (obj, wizard) { // points, // var key = wizard.name.replace(' ', ' '); // , , // 0. if (points[key]) { wizard.points = points[key]; } else { wizard.points = 0; } // name delete wizard.name; // wizard obj[key] = wizard; // return obj; }, {});
рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рджреЛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг ред
рдХреНрдпрд╛ рдореБрдЭреЗ Array.reduce () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
Array.reduce () рд╡рд┐рдзрд┐ рдЕрд░реНрдерд╣реАрди рд╕реЗ рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдзрд┐ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдИ рд╣реИред рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ? рдФрд░ рдХрдм?
Array.reduce () рд╡рд┐рдзрд┐ рдореЗрдВ рд╢рд╛рдирджрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рд╣реИред рдпрд╣ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдФрд░ IE9 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк IE6 рдореЗрдВ рд╕рдорд░реНрдерди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ Array.reduce () рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред Array.filter () Array.map () рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдзреАрдорд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, Array.reduce () рд╡рд┐рдзрд┐, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рдХрд░рддреА рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рд╣реЗрд▓реНрдкрд░ рдлрдВрдХреНрд╢рди рдЧреНрд░реБрдкрдмреА ()ред
рдЕрдВрддрддрдГ, рдпрд╣ рдЖрдкрдХреЗ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЯреВрд▓ рд╣реИред рдПрдХ рдЙрдкрдХрд░рдг рдЬреЛ рдпрджрд┐ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реБрдкрд░рдкреЙрд╡рд░ рджреЗ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдХреНрд░рд┐рд╕ рдлрд░реНрдбрд┐рдиреЗрдВрдбреА рд▓реЛрдЧреЛрдВ рдХреЛ рд╡реЗрдирд┐рд▓рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реАрдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЙрдирдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рд╣реИред
рдХреНрд░рд┐рд╕ рд╡реЗрдирд┐рд▓рд╛ рдЬреЗрдПрд╕ рдкреЙрдХреЗрдЯ рдЧрд╛рдЗрдб рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓реЗрдЦрдХ рд╣реИрдВ, рдЬреЛ рд╡реИрдирд┐рд▓рд╛ рдЬреЗрдПрд╕ рдЕрдХрд╛рджрдореА рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИрдВ, рдФрд░ рд╡реЗрдирд┐рд▓рд╛ рдЬреЗрдПрд╕ рдЕрдХрд╛рджрдореА рдХреЗ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рд╣реИрдВред рдЗрд╕рдХреЗ рдбреЗрд╡рд▓рдкрд░ рд╕рд▓рд╛рд╣рдХрд╛рд░ рд╕рдорд╛рдЪрд╛рд░ рдкрддреНрд░ рдХреЛ рд╣рд░ рд╕рдкреНрддрд╛рд╣ рд╣рдЬрд╛рд░реЛрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдиреНрд╣реЛрдВрдиреЗ рдЪреЛрдмрд╛рдиреА рдФрд░ рдмреЛрд╕реНрдЯрди рдЧреНрд▓реЛрдм рдЬреИрд╕реЗ рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдЙрдирдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдРрдкреНрдкрд▓ рдФрд░ рд╣рд╛рд░реНрд╡рд░реНрдб рдмрд┐рдЬрдиреЗрд╕ рд╕реНрдХреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред CSS-рдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдХреЛрдбрдкреЗрди рдХреЗ рд╕рдВрд╕реНрдерд╛рдкрдХ рдХреНрд░рд┐рд╕ рдХреЙрдпрд░ рдиреЗ рдЙрдирдХреЗ рдХрд╛рдо рдХреЛ "рдЕрдВрддрд╣реАрди рдЙрджреНрдзреГрдд" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ред
рдХреНрд░рд┐рд╕ рдХреЛ рд╕рдореБрджреНрд░реА рдбрд╛рдХреВ, рдкрд┐рд▓реНрд▓реЛрдВ рдФрд░ рдкрд┐рдХреНрд╕рд░ рдлрд┐рд▓реНрдореЗрдВ рдкрд╕рдВрдж рд╣реИрдВ, рдФрд░ рдореИрд╕рд╛рдЪреБрд╕реЗрдЯреНрд╕ рдЧреНрд░рд╛рдореАрдг рдЗрд▓рд╛рдХреЛрдВ рдореЗрдВ рдШреЛрдбрд╝реЗ рдХреЗ рдЦреЗрддреЛрдВ рдХреЗ рдкрд╛рд╕ рднреА рд░рд╣рддрд╛ рд╣реИред рд╡рд╣ рдПрдХ рдмреЗрд▓реА рдкрд┐рд▓реНрд▓рд╛ рдХреЗ рд╕рд╛рде рдЧреЛ рдореЗрдХ рдерд┐рдВрдЧреНрд╕ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддрд╛ рд╣реИред