[英]Wrong representation of JavaScript Array Length
如果我在JavaScript中有一個數組,請說:
var a = [1, 2, 3];
var b = ["Praveen", "Kumar", "Stack", "Overflow"];
如果我得到上述數組的長度:
a.length;
b.length;
我得到了正確的值。 即
a.length; // 3
b.length; // 4
但是,如果我創建另一個數組,我將索引設置為:
c = [];
c[5] = "Five";
c[10] = "Ten";
然后如果我查詢長度,它會顯示我11
。
c.length // 11
這是錯的嗎? 或者這樣JavaScript解釋數組? 請指導。
.length
被定義為大於最大數字索引的值。 (它不僅僅是“數字”;它是32位整數值,但基本上是編號屬性。)
相反, 將 .length
屬性設置為某個數值(例如,示例中為6
)會刪除屬性名稱大於或等於您設置的值的屬性。
的效果
var c = [];
c[10] = "foo";
是c
將如下所示:
c[0] === undefined
c[1] === undefined
c[2] === undefined
c[3] === undefined
c[4] === undefined
c[5] === undefined
c[6] === undefined
c[7] === undefined
c[8] === undefined
c[9] === undefined
c[10] === "foo"
具有元素0到10,因此數組的長度為11。
這是正確的。 長度取決於使用的最高索引,而不是數組中實際項目的數量。
像這樣創建一個數組:
c = [];
c[5] = "Five";
c[10] = "Ten";
具有與此完全相同的效果:
c = [,,,,,"Five",,,,,"Ten"];
雖然數組只有兩個項目,但長度為11,因為使用的最高索引是10。
數組的字符串表示形式將是[undefined, undefined, undefined, undefined, undefined, "Five", undefined, undefined, undefined, undefined, "Ten"]
因為它使用長度並顯示所有索引的值,直到。
如果循環數組中的屬性,則只能獲取實際項的索引:
for (n in c) console.log(n);
輸出:
5
10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.