ישנן שיטות שונות ב- JavaScript בהן תוכל להשתמש כדי לחפש פריט במערך. איזו שיטה תבחר תלויה במקרה השימוש הספציפי שלך.
למשל, האם ברצונך לקבל את כל הפריטים במערך העומדים בתנאי ספציפי? האם אתה רוצה לבדוק אם פריט כלשהו עומד בתנאי? האם אתה רוצה לבדוק אם ערך ספציפי נמצא במערך? או שאתה רוצה למצוא את אינדקס הערך במערך?
בכל מקרי השימוש הללו, שיטות ה- Array.prototype של JavaScript סיפקת. במאמר זה נדון בארבע שיטות בהן אנו יכולים לחפש פריט במערך. שיטות אלה הן:
- לְסַנֵן
- למצוא
- כולל
- אינדקס של
בואו נדון בכל אחד מהם.
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
אם ברצונך למצוא את האינדקס של פריט מסוים במערך.
רוצה לקבל הודעה כשאפרסם מאמר חדש? לחץ כאן.