در این مقاله می خواهیم به سه تا متد مهم Map، Filter و Reduce جاوا اسکریپت در ارایه ها بپردازیم.
متد فیلتر یک تابع callback را به عنوان ورودی می گیرد و یک ارایه جدید بر می گرداند.
نکات مهم:
به طور خلاصه، اگر بخواهیم یک ارایه را فیلتر کنیم، می توانیم از تابع filter استفاده کنیم.
نحو استفاده:
array.filter((element) => { /* ... */ } )
مثال:
let array = [ {id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}, {id: 7}, {id: 8}, {id: 9}, {id: 10}, {id: 11}, {id: 12}, {id: 13}, {id: 14}, {id: 15}, // ... ]; let result = array.filter(item => item.id>5); console.log(result);
در این نمونه ما می خواهیم همه عناصر با id بالاتر از ۵ را بگیریم
تابع فیلتر را می نویسیم و آن را به متغیر با نام result اختصاص می دهیم. این متغیر را روی صفحه چاپ می کنیم
و ما با موفقیت عناصر با id بالاتر از ۵ را فیلتر کردیم.
ما از تابع map برای بازسازی یک آرایه در قالبی که می خواهیم استفاده می کنیم.
متد map یک آرایه جدید ایجاد می کند که با نتایج فراخوانی یک تابع ارائه شده در هر عنصر در آرایه فراخوان پر شده است.
نحو استفاده:
array.map((element) => { /* ... */ })
مثال:
let array = [ {id: 1, name: 'John'}, {id: 2, name: 'Doe'}, {id: 3, name: 'Smith'}, {id: 4, name: "Bob"}, {id: 5, name: "Adam"}, // ... ]; let mapResult = array.filter(item => item.id<5).map(item => { return { mapId: item.id, mapName: item.name } }); console.log(mapResult);
من می خواستم اطلاعات با id کوچکتر از ۵ را بگیرم و id را در mapId قرار دهم و name را در mapName.
تابع filter و map را می نویسیم سپس ارایه جدید را در متغیر mapResult قرار می دهیم و مقدار متغیر را چاپ می کنیم.
و ما عناصر با شناسه کوچکتر از ۵ را با موفقیت filter و map کردیم.
هدف تابع Reduce این است که تمام عناصر آرایه اصلی را با مقدار اولیه یا مقدار شی به واحد تبدیل کند.
متد reducer تابع فراخوانی «reducer» ارائه شده توسط کاربر را بر روی هر عنصر آرایه به ترتیب ارسال مقدار بازگشتی از محاسبه روی عنصر قبلی اجرا می کند. نتیجه نهایی اجرای reducer در تمام عناصر آرایه یک مقدار واحد است.
نحو استفاده:
array.reduce((previousValue, currentValue) => { /* ... */ } )
مثال:
let array = [ {id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}, {id: 7}, {id: 8}, {id: 9}, {id: 10}, {id: 11}, {id: 12}, {id: 13}, {id: 14}, {id: 15}, // ... ]; let sumId = array.reduce((sum, item) => sum + item.id, 0); console.log(sumId);
من می خواهم جمع id های موجود در ارایه را بگیرم.
تابع reduce را می نویسیم سپس مقدار جدید را در متغیر sumId ذخیره می کنم. سپس متغیر را چاپ می کنیم.
ما با موفقیت id عناصر را جمع کردیم.
ما توابع filter، map و reduce را به شکل ساده بررسی کردیم. آنها در صورت استفاده صحیح عملیات ما را بسیار ساده تر می کنند.
نظر شما چیست کدام تابع کاربردی تر هست؟ یا اصلا تا حالا از این ۳ تابع استفاده کردید؟ ایا قبلا نحوه استفاده انها را می دانستید؟ لطفا نظرات خودتون رو به اشتراک بگذارید
منابع:
https://ocokyilmaz.medium.com/how-to-use-filter-map-and-reduce-a60fce1e6957