[英]How to get the correct array length
在我的代碼中,我初始化數組然后在其中放入一個值為什么輸出為 0 ?盡管這應該是 1
var changedfields=[];
changedfields['product']="productname";
alert(changedfields.length);
您正在創建一個關聯數組(普通數組有一個數字索引),但實際上是在嘗試構建一個 HashMap(一個鍵值對)。 使用對象或ES6 地圖。
我希望下面的例子能幫助你:
var changedfields = {}; // create an object
changedfields['product']="productname";
var keys = Object.keys(changedfields); // returns the keys of the object ['product']
alert(keys.length);
我建議閱讀有關 javascript 中數據結構的更多信息,並一般避免使用關聯數組。
你的問題很有趣。 以下是答案。
首先,Javascript 中的數組是對象類型。
你寫的第一行創建了一個空數組,它的類型是對象。
var changedfields=[];
您編寫的第二行創建了一個名為product of changedfields的屬性,並將值設置為productname 。 它允許您添加產品屬性,因為 Javascript 數組類型是對象。 如果你只有var changedfields; 您無法添加此屬性。
changedfields['product']="productname";
您編寫的第三行只是查找空數組的長度。
alert(changedfields.length);
在 Javascript 中,關聯數組是使用 object 實現的。 但是如果你想在changedfields數組中添加產品名稱。 您可以使用如下推送方法並檢查長度:
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、Opera 等有關
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.