חזרנו, עם תוכנה שמדפיסה את מערך החברים שלי.
אבל יש משהו שממש מעצבן אותי לגביה.
בכל פעם שאני מוסיפה חבר חדש למערך, אני צריכה להוסיף פקודת text כאן למטה.
בואו נאמר שאני מוסיפה את ווינסטון.
ובכן, הוא לא מופיע אוטומטית.
אם אני רוצה שהוא יופיע, אני צריכה לכתוב text(myFriends[3], ואז לשנות את המיקום בציר ה-y, ואז אנו רואים את ווינסטון.
זה הרבה יותר מדי עבודה!
אני רק רוצה שבכל פעם שאני מוסיפה מישהו למערך, שורת הקוד תתבצע אוטומטית.
ובכן, אתם זוכרים שכלמדנו לולאות?
לולאות היו דרך מעולה לחזור על אותו קטע קוד פעמים רבות ברצף.
למשל, אם רצינו לקבל אוסף עצים או בלונים ברצף.
ובכן, מסתבר שלולאות הן גם דרך מעולה להריץ קטע קוד מסוים על כל איבר במערך.
למעשה, אתם תשתמשו בלולאה כמעט בכל פעם שתשתמשו במערך. הם עובדים מצוין יחד.
בואו נשתמש בלולאה כדי להציג את השמות של החברים שלי, במקום כל השורות האלו עם פקודות text, כדי שתראו למה אני מתכוונת.
נתחיל עם שלוש שאלות שאנחנו תמיד שואלים את עצמנו כשאנחנו כותבים לולאה.
ראשית, על מה אני רוצה לחזור? ובכן, הסתכלו על הקוד כאן למעלה. מה חוזר על עצמו? פקודת ה-text.
מה אני רוצה שיהיה שונה בכל פעם? בואו נסתכל ונראה מה שונה. מיקום ה-y, והאינקס הנוכחי במערך, נכון? אז את מספר החבר ואת מיקום ה-y.
וכמה פעמים עלינו לחזור על הפעולה? נמשיך לחזור עד שלא יהיו יותר חברים במערך.
אז עכשיו אנחנו יודעים מה אנחנו רוצים, ואנחנו יכולים ליצור את הלולאה.
נתחיל עם משתנה מונה (counter) כדי לעקוב איפה אנחנו בלולאה. אז נכתוב: 'var friendNum=0;'
אנחנו נתחיל מ-0, כי כפי שאתם זוכרים, 0 הוא האיבר הראשון במערך, לא 1.
אחרי זה יש לנו את לולאת ה-while שלנו. נכתוב: 'while(friendNum < my friends.length)'
אנחנו הולכים להשוות את ערך המונה הנוכחי עם המספר הכולל של איברים במערך.
בתוך הלולואה, זה איפה שנשתמש בפקודת ה-text.
נכתוב: 'text(myFriends[' ואז כאן, במקום מספר, נרשום 'friendNum', כי friendNum מייצג את המספר הנוכחי.
וכרגע נרשום רק מיקום אחד.
קיבלנו שגיאת לולאה אינסופית, כי לא שינינו את friendNum במהלך הלולאה.
זכרו, אנחנו צריכים להגדיל את friendNum בכל פעם, אחרת הלולאה תמשיך לנצח, כי התנאי שלה תמיד יהיה נכון.
אני רואה שמשהו קרה. תנו לי רק להפוך את הקוד הישן להערה כדי שאוכל לראות מה הקוד החדש באמת עושה.
מה שקרה הוא שהראנו את כל השמות, אבל הם כולם אחד על השני.
אז אנחנו צריכים לשנות את מיקום ה-y שלנו.
בואו פשוט נכתוב: 'friendNum*30'.
אוקיי, זה טוב, אבל סופיה מחוץ למסך, וסופיה לא תהיה מרוצה אם היא תגלה את זה.
אז בואו פשוט נוסיף לזה 30. עכשיו הם כולם מוזזים ב-30.
יפה! אז עכשיו אתם רואים שיש לנו לולאה שמציגה את המערך שלנו.
וזה אומר שאם נוסיף עוד אנשים, כמו OhNoesGuy או Sal - אם אני רק אוסיף אותו למערך, אז Sal יוצג בתור חבר שלי. מצוין! עכשיו הוא חבר שלי.
ואתם רואים שזה אוטומטית מציג חברים חדשים כי זה תמיד עובר על כל המערך.
נוכל למחוק את הקוד הישן שלנו. אנחנו לא זקוקים לו עוד.
בואו נעבור על הקוד הזה כאן ונבין מה הוא עושה.
אנחנו מתחילים עם friendNum שווה לאפס.
אנחנו בודקים אם friendNum קטן מהאורך הנוכחי [של המערך].
כפי שאתם חושבים, 0 קטן מ-6, אז התנאי הוא נכון.
אנו נכנסים לתוך הלולאה, ואז כתוב text(myFriends[friendNum]...
זה יהיה myFriends במקום ה-0, בפעם הראשונה.
ואז 30, ועוד אפס כפול 30.
אז זה מציג את סופיה במיקום (10,30). זה מה שזה עושה.
ואז friendNum++. עכשיו הערך הוא 1.
ואז אנחנו חוזרים חזרה והקוד בודק - האם 1 קטן מהאורך של myFriends? כן, הוא קטן יותר.
וזה ממשיך, ממשיך, וממשיך.
לבסוף אנחנו מגיעים ל-Sal. זכרו, Sal הוא למעשה האיבר השישי במערך, אבל מספר האינדקס שלו הוא 5, כי מתחילים לספור מאפס.
האם 5 קטן מ-6? כן.
אז זה מציג את myFriends במקום ה-5.
ואז ה-counter (מונה) הופך ל-6, ואנחנו שואלים: האם 6 קטן מ-6? לא. הם שווים.
התנאי יהיה שקר. אז זה לא לעולם לא יציג את האיבר השישי,
מה שטוב, כי אין שום דבר באינדקס 6.
יש איבר שישי, אבל לא אינקדס מספר 6.
זה יכול להיות ממש מבלבל, העובדה ש-0 הוא האיבר הראשון וכל זה, אבל אתם תתפסו את זה.
אוקיי, זו הלולאה שלנו.
עכשיו, אם תרצו, אתם יכולים להשתמש גם בלולאת for אם אתם מעדיפים לולאות for.
במקרה של לולאות for, אנחנו נכתוב פשוט: for, ואז var friendNum שווה ל-0.
ואז יש לנו את התנאי שלנו - friendNum קטן מ-myFriends.length
ואז את פעולת הקידום: 'friendNum++'
ואז בתוך לולאת ה-for, אנחנו פשוט שמים את שורת הקוד הזאת.
ואני רק אשנה את מיקום ה-x כדי שתוכלו לראות
שזה עושה בדיוק את אותו הדבר. זה תלוי בכם באיזה מהם להשתמש, אבל הנקודה היא להשתמש בלולאה עם המערכים שלכם, כי זה נותן לכם הרבה כוח.