متد filter در جاوااسکریپت
سلام به همگی امیدوارم حال دلتون خوش باشه.
امروز قراره حسابی در مورد متد filter صحبت کنیم.
متد filter یکی از پرکاربردترین متدها جهت کار با آرایه ها در جاوااسکریپت می باشد.
طریقه استفاده از متد filter
ساختار کلی این متد به این صورت هست که به عنوان ورودی یک تابع callback میگیره که ما شرط خودمون رو داخل این تابع می نویسیم و سپس تابع callback رو یک به یک برای تمامی آیتم های یک آرایه اجرا میکنه و آیتم هایی که شرط رو پاس کردن در قالب یک آرایه جدید به ما برمی گردونه.
اولین نکته ای که باید بهش توجه داشته باشیم اینه که متد filter یه آرایه از آیتم های که شرط رو پاس کردن برمیگردونه.
ساختار نوشتاری(syntax)
به طور کلی میتونیم به سه روش این متد رو توی کدهامون بنویسیم :
اکثرا از متد فیلتر به صورت arrow function داخل کدهامون استفاده میکنیم.
تابع callback که به عنوان ورودی به متد فیلتر پاس میدیم شامل سه آرگومان ورودی میشه که آرگومان element اجباری و دو آرگومان index و array با توجه به کاری که قراره انجام بدیم اختیاری هستن.
آرگومان element به آیتم فعلی که تابع callback داره روی اون اجرا میشه اشاره میکنه.
آرگومان index به ایندکس آیتم فعلی اشاره میکنه و همونطور که می دونید در آرایه ها ایندکس آیتم ها از 0 شروع میشه یعنی ایندکس عضو اول برابر با 0 عضو دوم برابر با 1 و ... .
آرگومان array هم به آرایه فعلی اشاره میکنه.
باید توجه داشته باشید که شما میتونید هر اسمی برای این سه آرگومان در نظر بگیرید و هیچ اجباری برای این کار وجود نداره ولی حد امکان سعی کنید نام مرتبط استفاده کنید.
خب بریم چنتا مثال ببینیم تا بهتر با این متد آشنا بشیم :
خب میخوایم اعداد بزرگتر از 10 رو از داخل آرایه myArray به دست بیاریم.
تو مثال بالا با استفاده از متد filter تمامی آیتم های بزرگتر از 10 که توی آرایه myArray وجود داشتند رو در قالب یک آرایه جدید به نام result برگردوندیم.
خب حالا اگه هیچ کدوم از آیتم های آرایه برابر با شرط ما نبودن چه اتفاقی میوفته؟؟؟
در اینصورت متد filter یک آرایه خالی رو برمیگردونه که ینی هیچکدوم از اعضای آرایه ما برابر با شرط نبودن.
تو مثال بعدی میخوایم تمامی اعداد زوج رو از داخل آرایه myArray فیلتر کنیم:
تو مثال بالا تابع callback ما شرطی که تعریف کردیم رو برای تک تک آیتم های myArray اجرا کرد و دو مقدار
4 و 18 رو برای ما فیلتر کرد.
بهتره با هم یه مثال کاربردی تر ببینیم تا بهتر متوجه قدرت متدهای آرایه ها مخصوصا filter بشیم:
تصور کنید دوتا آرایه A و B داریم و میخوایم آیتم هایی از آرایه A که درون آرایه B نیستن رو فیلتر کنیم.
تو مثال بالا متد includes یک مقدار به عنوان ورودی میگیره و چک میکنه که آیا مقداری که بهش دادیم در آرایه arrB وجود داره یا نه؟
هر بار که تابع callback ما برای تک تک آیتم های آرایه arrA اجرا میشه مقدار آیتم فعلی به عنوان ورودی به متد includes پاس داده میشه و اگه اون مقدار درون آرایه arrB وجود داشت مقدار true و اگر وجود نداشت مقدار false رو برمیگردونه.
مثلا آیتم اول آرایه arrA (عدد 15) چون در آرایه arrB وجود داره مقدار true برمی گرده و آیتم دوم آرایه arrA (عدد 4)چون در arrB وجود نداره مقدار false رو برمیگردونه.
ولی چون ما به آیتم هایی نیاز داریم که در آرایه arrB وجود ندارن از عملگر ! استفاده میکنیم تا مقادیر true و false رو معکوس کنه.در نتیجه اعداد 4 و11و 5 برای ما فیلتر میشن.
استفاده از متد find در object ها
با استفاده از متد filter میتونیم به راحتی آبجکت های دارای یک property خاص رو از درون یک آرایه فیلتر کنیم.
تو مثال بالا به راحتی اومدیم و آبجکت هایی که دارای property برابر با شرط ما بودن رو فیلتر کردیم.
تاثیر متد filter روی آرایه ها
متد filter هیچ تغییری روی آرایه اصلی نمیزاره و اون رو تغییر نمیده و فقط آیتم هایی که برابر با شرط ما هستند رو در یک آرایه جدید برمی گردونه .
چکیده مطالب
متد filter یک آرایه از آیتم هایی که برابر با شرط ما بودن رو برمی گردونه.
متد filter یک تابع callback رو برای تک تک آیتم های آرایه ما اجرا می کنه.
اگر هیچ آیتمی برابر با شرط ما پیدا نشه، متد filter یک آرایه خالی [ ] برمیگردونه.
متد filter آرایه اصلی را تغییر نمی ده و هیچ تاثیری روی اون نمیزاره.
یه کم مطالب این قسمت زیاد شد ولی سعی کردم به طور کامل متد filter رو توضیح بدم.
امیدوارم از مطالب بالا استفاده کرده باشید.
اگر مطالب براتون مفید بود لایک فراموش نکنید.
ممنون از وقتی که گذاشتید.
مطلبی دیگر از این انتشارات
تجربه من از تیمارستان
مطلبی دیگر از این انتشارات
مشکل برق حل شد!
مطلبی دیگر از این انتشارات
انقلاب نسل چهارم؛ FIN TECH