ארבע דרכים שונות לחיפוש מערך ב- 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 היא פונקציית ה- callback שמופעלת על כל רכיב במערך

אם אף פריט במערך לא עומד בתנאי, מוחזר מערך ריק. תוכלו לקרוא עוד על שיטה זו כאן.

ישנם מקרים בהם איננו זקוקים לכל האלמנטים העומדים בתנאי מסוים. אנחנו רק צריכים אלמנט אחד שתואם את המצב. במקרה כזה, אתה זקוק לשיטת find ().

Array.find ()

אנו משתמשים בשיטת Array.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 ()

השיטה כוללת () קובעת אם מערך כולל ערך מסוים ומחזיר נכון או שקר לפי הצורך.

אז בדוגמה שלמעלה, אם אנחנו רוצים לבדוק אם 20 הוא אחד האלמנטים במערך, אנחנו יכולים לעשות זאת:

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

תבחין בהבדל בין שיטה זו לבין שיטות אחרות ששקלנו. שיטה זו מקבלת ערך ולא התקשרות חוזרת כארגומנט. הנה התחביר לשיטת הכללים:

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אם ברצונך למצוא את האינדקס של פריט מסוים במערך.

רוצה לקבל הודעה כשאפרסם מאמר חדש? לחץ כאן.