@שאול אני נהנה מהקוד שלך כי הוא מראה על תחכום, ועל ראש מתכנת.
מה שבעצם חיפשת זה להעלות את המשתנה a באחד בכל סיבוב.
אולם אתה מצהיר על הa בתוך הלולאה אז הוא לא יכול לזכור מה היה ערכו ב"גלגול" הקודם. צריך להכריז עליו מחוץ לולואה ועם let כי const זה לא בר עדכון.
העלאה באחד של משתנה זה פעולה פשוטה , a = a + 1, או בדרך הקצרה a++; ככה:
let a = 0
for (e of s) {
a++;
console.log(s[s.length - a])
}
אולם במקרה שאתה עושה עדכון מניה למשתנה במהלך הלולאה אז הרבה יותר נכון להשתמש בלולאת for רגילה, זה אחת הלולאות הוותיקות ביותר ושוריאציה שלה נמצאת כמעט בכל שפת תכנות. זה נראה ככה:
for (let a = 1; a < (s.length + 1); a++) {
console.log(s[s.length - a])
}
בגלל הגמישות של לולאת for אז אפשר ישירות לעשות מניה הפוכה:
const s = str.match(/.{1,10}(\s|$)/g);
for (let i = s.length -1; i > -1; i--){
console.log(s[i])
}
מה שעשיתי זה קביעת המשתנה i למספר הגבוה, וכל פעם לרדת אחד עד האפס.
יש בעצם שלוש חלקים, אתחול (let i = s.length -1), תנאי (i > -1), ועדכון מונה (i--).
האתחול קורה פעם אחת לפני הלולאה בכל מקרה, התנאי נבדק כל פעם לפני האיטרציה (כל "סיבוב") ועדכון המונה מתרחש אחריו.
יש לציין שכיום כמעט לא משתמשים בלולאת for במעבר על אוספים כי יש לולאות אלגנטיות יותר כמו הfor of, אולם במקרה כזה זה דוקא אידאלי וזה חסכוני בביצועים.
,