קוד: var bla = new Array(1,2,3); delete bla[1]; document.write(bla); // 1,,3 document.write(bla.length); // 3 (הפלט המוחזר בשתי השורות האחרונות מובא אחרי הסלאשים) למה השורה האחרונה לא מחזירה 2? איך אפשר למחוק באמת את האינדקס לגמרי?
var bla = new Array(1,2,3); delete bla[1]; document.write(bla); // 1,,3 document.write(bla.length); // 3
עוד משהו מוזר ששמתי לב אליו: קוד: var bla = new Array(1,2,3); delete bla[1]; var ibla; for(ibla in bla) { document.write(ibla); } בקוד הזה הפלט הוא "02", זאת אומרת שהאינדקס "1" כן נמחק. אז מה הבעיה עם length? אגב, מה שאני מחפש הוא לא splice(). בכוונה מחקתי עם delete כדי שהמערך לא יסתדר מחדש לאחר המחיקה, כפי שקורה עם splice.
var bla = new Array(1,2,3); delete bla[1]; var ibla; for(ibla in bla) { document.write(ibla); }
כלומר אתה רוצה שישאר תא באמצע מצד אחד, ולא רוצה שישאר תא באמצע מצד שני? (וזה גם לא נשמע לך סותר...)
נמאס לכם לזכור סיסמאות? לחצו כאן!
כן, קצת מוזר חשבתי שאם יש לי מצב כמו: קוד: var bla = new Array(); bla[0] = 1; bla[2] = 3; document.write(bla.length); אז אני אקבל 2 ולא 3, כלומר ה "undefined" לא ייספר, כי הרי בריצה על המערך זה מדלג על ה "undefined".
var bla = new Array(); bla[0] = 1; bla[2] = 3; document.write(bla.length);
אתה יכול לבנות בעצמך פונקציה קצרצרה שעוברת על המערך ומונה רק את התאים הרלוונטיים
תוספים לפורום קורס לטינית בלעדי לפרש, בפורום שפות ובלשנות.
ברור שאני יכול, אבל אני לא מבין למה בריצה על המערך ה "undefined" לא נספר, בעוד שב length הוא כן נספר.