簡體   English   中英

如何獲得正確的數組長度

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

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