در JavaScript، اغلب با دادههایی کار میکنید که در آرایهها (Arrays) ذخیره شدهاند.
یکی از کارهای رایج، جستجوی آرایه برای یافتن مقادیری است که با معیارهای خاصی مطابقت داشته باشند.
بسته به نیاز، ممکن است بخواهید:
-
یک مقدار بولی (true/false) برای تأیید وجود آن دریافت کنید
-
اندیس (Index) موقعیت مقدار در آرایه را پیدا کنید
-
یا یک آرایه جدید شامل تمام نتایج جستجو داشته باشید
قبل از ECMAScript 6، معمولاً از حلقهی for برای تکرار روی تمام آیتمها استفاده میکردید.
امروزه چندین متد داخلی وجود دارد که بسیاری از این نیازها را به صورت ساده و خوانا حل میکنند.
در این مقاله، با Array.includes()، Array.indexOf، Array.find() و Array.filter آشنا میشوید.
پیشنیازها
برای دنبال کردن این مقاله، بهتر است:
-
با آرایهها در JavaScript آشنایی داشته باشید
استفاده از includes()
متد includes() بررسی میکند که آیا یک مقدار در آرایه وجود دارد یا نه و true یا false برمیگرداند.
سینتکس:
-
valueToFind: مقداری که میخواهید جستجو کنید -
fromIndex(اختیاری): اندیسی که جستجو از آن شروع شود (پیشفرض 0)
مثال:
نکته: includes() از مقایسهی سختگیرانه (strict comparison) استفاده میکند:
-
کاربرد: وقتی فقط میخواهید بررسی کنید که یک مقدار وجود دارد یا نه.
استفاده از indexOf()
متد indexOf() اولین اندیس یک مقدار در آرایه را برمیگرداند.
اگر مقداری یافت نشد، -1 باز میگرداند.
سینتکس:
مثال:
نکته: برای یافتن آخرین مقدار، میتوانید از
lastIndexOf()استفاده کنید.
-
کاربرد: وقتی فقط به اندیس اولین نتیجهی جستجو نیاز دارید.
استفاده از find()
متد find() اولین مقداری در آرایه را که با شرط یک تابع مطابقت دارد، برمیگرداند.
اگر مقداری یافت نشود، undefined باز میگرداند.
سینتکس:
مثال:
-
متد
find()فقط اولین مقدار مطابق با شرط را باز میگرداند.
مثال با اندیس:
نکته: برای گرفتن اندیس به جای مقدار، میتوانید از
findIndex()استفاده کنید.
-
کاربرد: وقتی فقط به یک مقدار خاص مطابق با شرط نیاز دارید.
استفاده از filter()
متد filter() یک آرایه جدید شامل تمام مقادیری که با شرط یک تابع مطابقت دارند، برمیگرداند.
اگر هیچ مقداری پیدا نشد، آرایهی خالی باز میگرداند.
سینتکس:
مثال:
-
کاربرد: وقتی میخواهید چندین مقدار مطابق با شرط را به دست آورید.
جمعبندی
-
فقط میخواهید بدانید مقدار وجود دارد یا نه؟ →
includes() -
فقط میخواهید مقدار را بگیرید →
find()برای یک مورد،filter()برای چند مورد -
فقط میخواهید اندیس مقدار را پیدا کنید →
indexOf()برای primitive،findIndex()برای تابع
از همراهی شما با پارمین کلود متشکریم.
نظرات کاربران