reduce() කියන්නේ array එකක් තුළ තියෙන values එකට එකතු කරලා final result එකක් ගන්න පාවිච්චි කරන්න පුළුවන් method එකක්.
reduce() එකේ හැසිරීම තේරුම් ගන්න හොඳම උදාහරණය:
🍳 ඔම්ලට් එකක්.
අපි array එකක් ගමු [බිත්තර, සිහින්ව කපාගත් ළූණු, කපාගත් අමු මිරිස්, ලුණු, ගම්මිරිස්]. දැන් මේ ටික වෙන වෙනම තියෙද්දි ඒකට ඔම්ලට් එකක් කියන්න බෑනේ.
අන්න ඒ නිසා අපි reduce() කරන්න ඕන.
මෙතනදි පළමුවෙනි parameter එක විදියට function එකත්, දෙවැන්න විදියට initialValue එකත් දෙන්න පුළුවන්. Initial Value එක දෙන්න ඕනම නෑ, optional.
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((total, num) => total + num, 0);
console.log(sum); // 10
මෙතන 0 කියලා තියෙන්නේ initialValue එක. මොකද පළමුවෙනි අයිතමය වන “1”ට එකතු කරන්න දෙයක් නැහැනේ. අන්න ඒ නිසා 0 තියන්න පුළුවන්. අපි එතනට මොනවත් නොදැම්මොත් කෙළින්ම 1 විතරක් අරගෙන ඊළඟ අයිතමයට: 2ට යනවා. එතනදි total එක විදියට තියෙන්නෙ 1. ඒකට 2 එකතු කරනවා. උත්තරේ 3යි.
ඔන්න ඔය විදියට හැම අයිතමයකටම එක ගානෙ එකතු කරගෙන යනවා. අවසානයේ sum කියන variable එකට 10 කියලා එනවා.
මේක debug කරමින් පේළියෙන් පේළියට වැඩේ වෙන විදිය ලස්සනට බලාගන්න පුළුවන් මෙහෙම දාගත්තාම:
const sum = numbers.reduce((total, num) => {
console.log("total: ", total, " | num: ", num);
return total + num;
});
Result එක මෙහෙම එනවා:
> total: 1 | num: 2 (එකයි, දෙකයි = තුනයි)
> total: 3 | num: 3 (තුනයි, තුනයි = හයයි)
> total: 6 | num: 4 (හයයි, හතරයි = දහයයි)
> 10
⚡ Performance අතින් ගත්තාම?
මේකම Array.forEach එකෙනුත් කරන්න පුළුවන්. ඒත් slow. මේ දෙකටම වඩා for loop එකේ වේගය වැඩියි. ඒත් readability අඩුයි.
ඒ නිසා අවස්ථාව අනුව (Array size එක අනුව, Resources availability අනුව) හොඳම දේ තෝරගන්න වෙනවා.
Leave a Reply