أربع طرق مختلفة للبحث في مصفوفة في JavaScript

توجد طرق مختلفة في JavaScript يمكنك استخدامها للبحث عن عنصر في مصفوفة. تعتمد الطريقة التي تختارها على حالة الاستخدام المحددة الخاصة بك.

على سبيل المثال ، هل تريد الحصول على جميع العناصر في مصفوفة تفي بشرط معين؟ هل تريد التحقق مما إذا كان أي عنصر يلبي الشرط؟ هل تريد التحقق من وجود قيمة معينة في المصفوفة؟ أو هل تريد العثور على فهرس القيمة في المصفوفة؟

بالنسبة لجميع حالات الاستخدام هذه ، فقد قمت بتغطية طرق Array.prototype في JavaScript. في هذه المقالة ، سنناقش أربع طرق يمكننا استخدامها للبحث عن عنصر في مصفوفة. هذه الطرق هي:

  1. منقي
  2. تجد
  3. يشمل
  4. مؤشر

دعونا نناقش كل منهم.

Array.filter ()

يمكننا استخدام طريقة Array.filter () للعثور على عناصر في مصفوفة تفي بشرط معين. على سبيل المثال ، إذا أردنا الحصول على جميع العناصر في مصفوفة من الأرقام أكبر من 10 ، فيمكننا القيام بذلك:

const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.filter(element => element > 10); console.log(greaterThanTen) //[11, 20]

صيغة استخدام طريقة array.filter () هي كما يلي:

let newArray = array.filter(callback);

أين

  • newArray هي المصفوفة الجديدة التي تم إرجاعها
  • array هي المصفوفة التي يتم استدعاء عملية التصفية عليها
  • callback هي وظيفة رد النداء التي يتم تطبيقها على كل عنصر من عناصر المصفوفة

إذا لم يفي أي عنصر في المصفوفة بالشرط ، يتم إرجاع مصفوفة فارغة. يمكنك قراءة المزيد عن هذه الطريقة هنا.

هناك أوقات لا نحتاج فيها إلى جميع العناصر التي تفي بشرط معين. نحتاج فقط إلى عنصر واحد يطابق الشرط. في هذه الحالة ، تحتاج إلى طريقة البحث ().

Array.find ()

نستخدم طريقة Array.find () للعثور على العنصر الأول الذي يفي بشرط معين. تمامًا مثل التابع filter ، فإنه يأخذ رد نداء كوسيطة ويعيد العنصر الأول الذي يلبي شرط رد الاتصال.

دعنا نستخدم طريقة find على المصفوفة في المثال أعلاه.

const array = [10, 11, 3, 20, 5]; const greaterThanTen = array.find(element => element > 10); console.log(greaterThanTen)//11

بناء جملة array.find () هو

let element = array.find(callback);

رد النداء هو الوظيفة التي يتم تنفيذها على كل قيمة في المصفوفة وتأخذ ثلاث وسائط:

  • element - العنصر الذي يتم التكرار عليه (مطلوب)
  • index - مؤشر / موضع العنصر الحالي (اختياري)
  • array- المصفوفة التي findتم استدعاؤها (اختياري)

لاحظ ، مع ذلك ، أنه إذا لم يكن هناك عنصر في المصفوفة يلبي الشرط ، فإنه يعود undefined.

ماذا لو كنت تريد التحقق مما إذا كان عنصر معين في مصفوفة؟ كيف تفعل هذا؟

Array.includes ()

تحدد طريقة include () ما إذا كانت المصفوفة تتضمن قيمة معينة وترجع صوابًا أو خطأً حسب الاقتضاء.

لذا في المثال أعلاه ، إذا أردنا التحقق مما إذا كان الرقم 20 هو أحد العناصر في المصفوفة ، فيمكننا القيام بذلك:

const array = [10, 11, 3, 20, 5]; const includesTwenty = array.includes(20); console.log(includesTwenty)//true

ستلاحظ اختلافًا بين هذه الطريقة والطرق الأخرى التي أخذناها في الاعتبار. تقبل هذه الطريقة قيمة وليس رد نداء كوسيطة. إليك صيغة طريقة include:

const includesValue = array.includes(valueToFind, fromIndex)

أين

  • valueToFind هي القيمة التي تتحقق منها في المصفوفة (مطلوبة) ، و
  • fromIndex هو الفهرس أو الموضع في المصفوفة الذي تريد بدء البحث عن العنصر منه (اختياري)

للحصول على مفهوم الفهرس ، دعنا نزور مثالنا مرة أخرى. إذا أردنا التحقق مما إذا كانت المصفوفة تحتوي على 10 في مواضع أخرى بخلاف العنصر الأول ، فيمكننا القيام بذلك:

const array = [10, 11, 3, 20, 5]; const includesTenTwice = array.includes(10, 1); console.log(includesTenTwice)//false

Array.indexOf ()

تُرجع الدالة indexOf () أول فهرس يمكن عنده العثور على عنصر معين في مصفوفة. تقوم بإرجاع -1 إذا كان العنصر غير موجود في المصفوفة.

دعنا نعود إلى مثالنا. لنجد فهرس 3 في المصفوفة.

const array = [10, 11, 3, 20, 5]; const indexOfThree = array.indexOf(3); console.log(indexOfThree)//2

تركيبها مشابه لتلك الخاصة includesبالطريقة.

const indexOfElement = array.indexOf(element, fromIndex)

أين

  • element هو العنصر الذي تبحث عنه في المصفوفة (مطلوب) ، و
  • fromIndex هو الفهرس أو الموضع في المصفوفة الذي تريد بدء البحث عن العنصر منه (اختياري)

من المهم ملاحظة أن كلا التابعين includesو indexOfالتابعين يستخدمان المساواة الصارمة ('===') للبحث في المصفوفة. إذا كانت القيم من أنواع مختلفة (على سبيل المثال '4' و 4) ، فسترجع falseوعلى -1التوالي.

ملخص

باستخدام طرق المصفوفة هذه ، لا تحتاج إلى استخدام حلقة for للبحث في مصفوفة. بناءً على ما تحتاجه ، يمكنك تحديد الطريقة الأنسب لحالة الاستخدام الخاصة بك.

فيما يلي ملخص بموعد استخدام كل طريقة:

  • استخدم filterإذا كنت تريد العثور على جميع العناصر في مصفوفة تفي بشرط معين.
  • استخدم findإذا كنت تريد التحقق مما إذا كان هذا العنصر على الأقل يلبي شرطًا معينًا.
  • استخدم includesإذا كنت تريد التحقق مما إذا كانت المصفوفة تحتوي على قيمة معينة.
  • استخدم indexOfإذا كنت تريد العثور على فهرس عنصر معين في مصفوفة.

هل تريد أن يتم إخطاري عند نشر مقال جديد؟ انقر هنا.