2014-07-25 17 views
2

我很難理解此代碼。有人可以試圖解釋爲什麼一個數組可以有元素和0長度?點擊功能中的Javascript數組長度

var myArray = []; 
myArray["hello"] = 4; 
myArray["world"] = 65; 
$('#btn').on('click',function() { 
    console.log(myArray.length); // Prints 0 
    console.log(myArray); // Prints [hello: 4, world: 65] 
    console.log(myArray.length); // Prints 0 
} 
+0

這不是異步的,你正在使用一個框架隱藏JavaScript的80%的樂趣。所以,請不要忘記它在你的標籤中(我爲你添加了它) – Sebas

+0

你可能想要Object.keys(myArray).length,但你應該使用一個對象而不是數組。 – dandavis

+0

長度只添加數字索引的屬性,您在本例中使用'Array'作爲字典。 如果你想遍歷'Array',你可以把'String'和'Number'放入'Object'中,並將其插入到'Array'中。 –

回答

4

.length屬性只適用於數字索引屬性。

+2

沒有冒犯,@Pointy但是,雖然是真的,但這不是真正的問題的答案。他在這裏做的是實例化一個新的數組對象,然後爲名爲'hello'和'world'的對象添加屬性。他正在設置數組* object *的屬性,而不是數組本身的元素。 – Grinn

+1

@grinn:FWIW,數組元素是對象的屬性。每個屬性都帶有一個數字,正數的32位(或左右)屬性名稱被認爲是一個元素。 –

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – acrosman