在我的代碼初始化數組,然後把它裏面的值爲什麼輸出爲0?儘管這應該是1如何獲取正確的數組長度
var changedfields=[];
changedfields['product']="productname";
alert(changedfields.length);
在我的代碼初始化數組,然後把它裏面的值爲什麼輸出爲0?儘管這應該是1如何獲取正確的數組長度
var changedfields=[];
changedfields['product']="productname";
alert(changedfields.length);
你正在創建一個關聯數組(正常的數組有一個數字索引),但實際上是試圖構建一個HashMap(一個鍵值對)。使用對象或ES6 Maps。
我希望下面的例子將幫助你:
var changedfields = {}; // create an object
changedfields['product']="productname";
var keys = Object.keys(changedfields); // returns the keys of the object ['product']
alert(keys.length);
我建議閱讀更多關於JavaScript中的數據結構,避免一般性關聯數組。
thanks.bro您的答案是正確的 –
@amgadatef不客氣:) –
你的問題很有趣。以下是答案。
首先在Javascript中的數組是對象類型。
您寫的第一行創建一個空數組,它的類型是object。
var changedfields=[];
你寫第二行創建了一個名爲產品的 changedfields財產,並將其值設爲產品名稱。它允許您添加產品屬性,因爲JavaScript Array類型是對象。如果你剛剛有var changedfields;你無法添加此屬性。
changedfields['product']="productname";
您寫的第三行只是簡單地查找空數組的長度。
alert(changedfields.length);
在JavaScript中,使用對象來實現關聯數組。但是如果你想在已更改字段數組中添加產品名稱。你可以使用push方法如下圖所示,並檢查長度:
changedfields.push('productname');
console.log(changedfields.length);
的Javascript數值索引數組長度
所以JavaScript的數值索引數組長度可以這樣計算:
console.log(array.length);
console.log(changedfields.length); // in your case
的Javascript關聯數組長度
Javascript關聯數組(對象)長度可以通過以下方式計算:
選項1:
Object.len = function(obj) {
var objLen = 0;
for (i in obj) {
obj.hasOwnProperty(i) ? objLen++ : '';
}
return objLen;
};
console.log(Object.len(changedfields));
選項2:
console.log(Object.keys(array).length);
console.log(Object.keys(changedfields).length); // in your case
注:這有問題與Internet Explorer 8,歌劇院等
感謝兄弟:你的答案也正確= D –
你是混亂的對象和數組。 – saadq