簡體   English   中英

JavaScript數組長度的錯誤表示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM