امروز می خوایم با هم متود reduce رو که یکی از متود های کاربردی جاوا اسکریپت هست بررسی کنیم
ساختار کلی این متود به شکل زیر تعریف میشه
array.reduce(function(total, currentValue, currentIndex, arr), initialValue) // better way to use : array.reduce(callback[, initialValue]);
متود reduce آرایه ای از Item ها را دریافت کرده و در نهایت بعد از انجام محاسبات یک تک مقدار بر می گرداندمتود reduce آرایه ای از Item ها را دریافت کرده و در نهایت بعد از انجام محاسبات یک تک مقدار بر می گرداند
یا به عبارت دیگر مقادیر دریافتی را به یک مقدار کاهش می دهد
متد reduce دو پارامتر دریافت می کند :
پارامتر اول تابعی که کار کاهش مقادیر دریافتی به یک تک مقدار را انجام می دهد که خود 4 پارامتر دارد
که 2 پارامتر اول بیشترین استفاده را دارند
currTeam
پارامتر دوم مقدار اولیه تک مقداری که قرار است باز گردانده شود. می تونه عدد - یا ابجکت یا ارایه باشه.
برای مثال کد زیر به کمک متود reduce مجموع امتیازات را در ارایه ای از ابجکت ها محاسبه کرده است
const list= [ { name: "Nigeria", position: "1st", points: 43 }, { name: "England", position: "2nd", points: 37 }, { name: "USA", position: "3rd", points: 35 }, { name: "South Africa", position: "4th", points: 30 }, { name: "Brazil", position: "5th", points: 27 }, { name: "Korea", position: "6th", points: 23 } ] const totalPoints = list.reduce((acc, currTeam) => acc + currTeam.points, 0); console.log(totalPoints) // Prints 195
باید توجه داشت که به طور پیش فرض نیاز است که یک مقدار اولیه برای acc در نظر گرفته بشه. اگه مقدار اولیه برای acc در نظر نگیرین اولین مقدار آرایه رو به عنوان مقدار اولیه در نظر می گیره. مقدار اولیه یا intial value می تونه بسته به شرایط ارایه یا ابجکت یا عدد و... باشه. برای توضیح بیشتر به تصویر زیر دقت کنید
در این تصویر و همچنین در مثال بالا مقدار اولیه acc صفر در نظر گرفته شده است . اما در تکه کد زیر مقدار اولیه یک آرایه خالی است.
let flattened = [[3, 4, 5], [2, 5, 3], [4, 5, 6]].reduce( (singleArr, nextArray) => singleArr.concat(nextArray), []) // results is [3, 4, 5, 2, 5, 3, 4, 5, 6]
امیدوارم که مورد توجهتون قرار گرفته باشه :)