چگونه با Array.find در JS عنصر دلخواه را پیدا کنیم؟

متد Array.find در JavaScript چیست؟

متد Array.find در JavaScript یک راه ساده و کاربردی برای پیدا کردن و برگرداندن اولین عنصری است که یک شرط مشخص (تابع تست) را در یک آرایه پاس می‌کند.

وقتی فقط به یک سوزن از داخل انبار کاه نیاز داری، بهترین انتخاب find() است!


چه زمانی از Array.find استفاده کنیم؟

از نظر سینتکس و عملکرد، متد find() بسیار شبیه به Array.filter است، با این تفاوت‌های مهم:

  • find() فقط اولین عنصر منطبق با شرط را برمی‌گرداند

  • اگر هیچ عنصری پیدا نشود، مقدار undefined برمی‌گرداند

  • filter() همیشه آرایه‌ای از نتایج (صفر یا بیشتر) برمی‌گرداند

نتیجه:

  • اگر فقط یک مقدار می‌خواهی → find()

  • اگر چند مقدار می‌خواهی → filter()


نحوه استفاده از Array.find

استفاده از find() خیلی ساده است. تنها پارامتر اجباری آن یک تابع تست (testing function) است:

array.find(testingFunction);

مثال ساده

یک مثال ساده با آرایه‌ای از رشته‌ها:

const trees = [
"birch",
"maple",
"oak",
"poplar"
];
const result = trees.find(tree => tree.startsWith(“m”));// “maple”

همان مثال بدون ES6 و arrow function:

const result = trees.find(function(tree) {
return tree.startsWith("m");
});
// “maple”

استفاده از Array.find با Objectها

متد find() برای جستجو در آرایه‌ای از Objectها هم بسیار کاربردی است:

const trees = [
{ name: "birch", count: 4 },
{ name: "maple", count: 5 },
{ name: "oak", count: 2 }
];
const result = trees.find(tree => tree.name === “oak”);// { name: “oak”, count: 2 }


توجه: فقط اولین نتیجه برگردانده می‌شود

اگر شرط شما چند نتیجه داشته باشد، find() فقط اولین مورد را برمی‌گرداند:

const result = trees.find(tree => tree.count > 2);

// { name: “birch”, count: 4 }

در این حالت، اگر همه‌ی نتایج را نیاز دارید، بهتر است از filter() استفاده کنید.


نکته حرفه‌ای: جدا کردن تابع تست

گاهی لازم است از یک شرط یکسان در چند جای مختلف استفاده کنید. در این حالت، بهتر است تابع تست را جداگانه تعریف کنید.

مثال:

const deciduous = [
{ name: "birch", count: 4 },
{ name: "maple", count: 5 },
{ name: "oak", count: 2 }
];
const evergreens = [
{ name: “cedar”, count: 2 },
{ name: “fir”, count: 6 },
{ name: “pine”, count: 3 }
];// تابع تست
const hasFiveOrMore = el => el.count >= 5;

const decResult = deciduous.find(hasFiveOrMore);
// { name: “maple”, count: 5 }

const evgResult = evergreens.find(hasFiveOrMore);
// { name: “fir”, count: 6 }

ساده، تمیز و قدرتمند


استفاده از پارامتر index

مانند filter()، متد find() هم یک پارامتر اختیاری index در اختیار شما می‌گذارد:

const evergreens = [
{ name: "cedar", count: 2 },
{ name: "fir", count: 6 },
{ name: "pine", count: 3 }
];
// فرض کنید می‌خواهیم عنصر اول نادیده گرفته شود
const result = evergreens.find((tree, i) => {
if (tree.count > 1 && i !== 0) return true;
});// { name: “fir”, count: 6 }

معمولاً زیاد به index نیاز پیدا نمی‌کنید، اما دانستن وجود آن در بعضی سناریوها بسیار مفید است.


جمع‌بندی (Conclusion)

متد Array.find یک ابزار ساده اما بسیار قدرتمند برای جستجو در آرایه‌های JavaScript است.

به خاطر بسپارید:

  • find() → فقط یک عنصر برمی‌گرداند

  • اگر چیزی پیدا نشود → undefined

  • برای چند نتیجه → از filter() استفاده کنید

اگر می‌خواهید با سایر متدهای آرایه در JavaScript بیشتر آشنا شوید، مطالعه‌ی راهنمای کامل Array Methods بسیار توصیه می‌شود.

از همراه یشما با پارمین کلود متشکریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *