ویرگول
ورودثبت نام
Hossein Razavi Nazem
Hossein Razavi Nazem
خواندن ۲ دقیقه·۲ سال پیش

شرح کاربرد متود reduce در جاوا اسکریپت


امروز می خوایم با هم متود reduce رو که یکی از متود های کاربردی جاوا اسکریپت هست بررسی کنیم

ساختار کلی این متود به شکل زیر تعریف میشه

array.reduce(function(total, currentValue, currentIndex, arr), initialValue) // better way to use : array.reduce(callback[, initialValue]);

متود reduce آرایه ای از Item ها را دریافت کرده و در نهایت بعد از انجام محاسبات یک تک مقدار بر می گرداندمتود reduce آرایه ای از Item ها را دریافت کرده و در نهایت بعد از انجام محاسبات یک تک مقدار بر می گرداند

یا به عبارت دیگر مقادیر دریافتی را به یک مقدار کاهش می دهد

متد reduce دو پارامتر دریافت می کند :

پارامتر اول تابعی که کار کاهش مقادیر دریافتی به یک تک مقدار را انجام می دهد که خود 4 پارامتر دارد

که 2 پارامتر اول بیشترین استفاده را دارند

  • اول مقدار نهایی که باید بر گردانده شود یا acc یا Total
  • دوم item هایی که عمل کاهش روی آن انجام می شود یا currTeam
  • سوم index ایتم های دریافتی
  • چهارم : آرایه دریافتی

پارامتر دوم مقدار اولیه تک مقداری که قرار است باز گردانده شود. می تونه عدد - یا ابجکت یا ارایه باشه.

برای مثال کد زیر به کمک متود reduce مجموع امتیازات را در ارایه ای از ابجکت ها محاسبه کرده است

const list= [ { name: &quotNigeria&quot, position: &quot1st&quot, points: 43 }, { name: &quotEngland&quot, position: &quot2nd&quot, points: 37 }, { name: &quotUSA&quot, position: &quot3rd&quot, points: 35 }, { name: &quotSouth Africa&quot, position: &quot4th&quot, points: 30 }, { name: &quotBrazil&quot, position: &quot5th&quot, points: 27 }, { name: &quotKorea&quot, position: &quot6th&quot, points: 23 } ] const totalPoints = list.reduce((acc, currTeam) => acc + currTeam.points, 0); console.log(totalPoints) // Prints 195


باید توجه داشت که به طور پیش فرض نیاز است که یک مقدار اولیه برای acc در نظر گرفته بشه. اگه مقدار اولیه برای acc در نظر نگیرین اولین مقدار آرایه رو به عنوان مقدار اولیه در نظر می گیره. مقدار اولیه یا intial value می تونه بسته به شرایط ارایه یا ابجکت یا عدد و... باشه. برای توضیح بیشتر به تصویر زیر دقت کنید

مقدار اولیه محاسبگر  reduce
مقدار اولیه محاسبگر reduce

در این تصویر و همچنین در مثال بالا مقدار اولیه 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]



امیدوارم که مورد توجهتون قرار گرفته باشه :)


جاوا اسکریپتمتود های جاوا اسکریپتreduce method
عاشق نرم افزار و دنیای فناوری .....
شاید از این پست‌ها خوشتان بیاید