הקדמה
בִּJavaScript, סוג הנתונים array מורכב מרשימת אלמנטים. קיימים הרבה שיטות מובנות שימושיות למפתחי JavaScript עבור עבודה עם מערכים. שיטות שמשנות את המערך המקורי ידועות כשיטות מוטאטוריות, ושיטות שמחזירות ערך או ייצוג חדש ידועות כשיטות אקססוריות.
קיימת קטגוריה שלישית של שיטות מערכים, הידועות כשיטות איטרציה, אשר הן שיטות שפעולתן ביצוע על כל פריט במערך, אחד אחרי השני. שיטות אלו קשורות באופן צמוד ללולאות. במדריך הזה, נתמקד בשיטות איטרציה.
כדי להשיג את המרב מהמדריך הזה, יש לך מסווגה קצת את עצמך ביצירת, אינדוקסציה, שינוי ולולאות דרך מערכים, אשר ניתן לסקור במדריך הבנת מערכים בִּJavaScript.
במדריך זה, נשתמש בשיטות איטרציה כדי לעבור דרך מערכים, לבצע פונקציות על כל פריט במערך, לסנן את התוצאות הרצויות של מערך, להפחית פריטים במערך לערך יחיד, ולחפש במערכים ערכים או אינדקסים.
הערה: שיטות המערך נכתבות כהלכה כך: Array.prototype.method()
, מאחר ו-Array.prototype
מתייחס לאובייקט ה-Array
עצמו. לצורך פשטות, נציין את השם פשוט כ-method()
.
הבנת פונקציות חץ
הרבה מדוגמאות במדריך זה ישתמשו ב־ביטויי פונקציית חץ של JavaScript, שמיוצגים על ידי סימן שווה ואז סימן גריעה: =>
.
A function is a block of reusable code that can be executed. Traditionally, a function can be written with the following syntax:
הגרסה העדכנית ביותר של JavaScript בזמן כתיבת המדריך מאפשרת שימוש בפונקציות חץ, שניתן לכתוב בתחביר הבא:
הסוגריים בכל אחד מהמקרים עשויים להכיל פרמטרים. כאשר יש רק פרמטר אחד, הסוגריים ניתן להוריד, כך:
במהלך הדוגמאות במדריך זה, נשתמש בתחביר של פונקציית החץ. כדי לקרוא ולהבין עוד על פונקציות ב-JavaScript, קרא את מדריך הפונקציות ב־Mozilla Developer Network.
forEach()
פונקציית ה־forEach()
קוראת לפונקציה עבור כל איבר במערך.
בואו נתחיל עם המערך הבא שהוקצה למשתנה fish
:
נוכל להשתמש ב־forEach()
כדי להדפיס כל פריט במערך fish
לקונסולה.
פעם שנעשה זאת, נקבל את הפלט הבא:
Outputpiranha
barracuda
cod
eel
דרך נוספת לעשות זאת היא באמצעות מילת המפתח for
loop ובדיקתה נגד מאפיין האורך של המערך.
הקוד לעיל יציג את אותו הפלט כמו בשימוש בשיטת forEach()
. כשיטת האיטרציה המיועדת במיוחד לשימוש עם מערכים, forEach()
היא יותר קצרה ופשוטה למשימה זו במיוחד.
map()
השיטה map()
יוצרת מערך חדש עם תוצאת קריאת פונקציה על כל איבר במערך.
לדוגמה של איך להשתמש בשיטת האיטרציה map()
, אנו יכולים להדפיס כל איטרציה של לולאה לקונסולה. map()
לא משנה את המערך המקורי, במקום זה היא מחזירה ערך מערך חדש.
Outputpiranha
barracuda
cod
eel
אנו יכולים גם להשתמש ב־map()
כדי לשנות את ערכי כל פריט במערך. כדי להדגים זאת, נוסיף s
לסוף כל פריט במערך fish
כדי לפלורליזציה של כל מילה.
Output[ 'piranhas', 'barracudas', 'cods', 'eels' ]
המשתנה המקורי fish
לא השתנה, אך pluralFish
כעת מכילה גרסה משונה של המשתנה המקורי.
filter()
השיטה filter()
יוצרת מערך חדש עם האיברים שעוברים את תוצאת הבדיקה הנתונה.
אנו יכולים להשתמש filter()
כדי להחזיר מערך חדש המכיל רק את הפריטים ברשימה שמתחילים באות ספציפית. כדי לעשות זאת, אנו יכולים להשתמש באינדקסים של מחרוזת כדי לקרוא לפריט הראשון (או האות) בכל פריט מחרוזת של המערך.
Output[ 'shark', 'squid', 'starfish' ]
ביצענו בדיקה לקביעת אילו פריטים במערך מכילים את ה- s
באינדקס 0
, והקצנו את התוצאה למשתנה חדש.
filter()
הוא שיטת האיטרציה, ואינו משנה את המערך המקורי.
reduce()
שיטת ה- reduce()
תקטין מערך לערך יחיד.
זה רואים בדרך כלל עם מספרים, כמו למצוא את סכום כל המספרים במערך.
Output108
reduce()
יכול להשתמש גם עם מחרוזות וסוגי נתונים אחרים. הערך שמוחזר על ידי reduce()
יכול להיות מספר, מחרוזת, מערך או סוג נתונים אחר. reduce()
הוא שיטת האיטרציה שאינה משנה את המערך המקורי.
find()
שיטת find()
מחזירה את הערך הראשון במערך שעובר טסט מסוים.
לדוגמה, ניצור מערך של יצורי ים.
אז נשתמש בשיטת find()
כדי לבדוק אם אחד מהיצורים במערך הם צפלופודים.
Outputoctopus
מאחר ו־octopus
היה הערך הראשון במערך שעבר את הבדיקה בפונקציית isCephalopod()
, הוא הוא הערך הראשון שיחזר.
שיטת find()
יכולה לעזור לך לעבוד עם מערכים שמכילים ערכים רבים.
findIndex()
שיטת findIndex()
מחזירה את האינדקס הראשון במערך שעובר טסט מסוים.
נוכל להשתמש בדוגמת seaCreatures
אותה השתמשנו בה בשיטת find()
.
באמצעות הבדיקה isCephalopod
, נמצא את מספר האינדקס במקום הערך של ההתאמה הראשונה.
Output1
octopus
הוא הפריט הראשון שעבר את הבדיקה ויש לו אינדקס של 1
, לכן זהו מספר האינדקס שיחזר.
אם הבדיקה לא מתממשה, findIndex()
תחזיר -1
.
Output-1
שיטת findIndex()
שימושית במיוחד כאשר מתעסקים עם מערכים המכילים הרבה פריטים.
מסקנה
במדריך זה, ביקרנו בשיטות המובנות העיקריות לאיטרציה על מערכים ב-JavaScript. שיטות האיטרציה פועלות על כל פריט במערך ולעיתים תמיד מבצעות פונקציה חדשה. עברנו על איך לעבור דרך מערכים, לשנות את ערך כל פריט במערך, לסנן ולהפחית מערכים ולמצוא ערכים ואינדקסים.
כדי לבדוק שוב את היסודות של מערכים, קרא הבנת מערכים ב-JavaScript. למידע נוסף על תחביר ב-Javascript, ראה את המדריך שלנו על "הבנת תחביר ומבנה קוד ב-JavaScript".