JavaScript 中,對于普通物件,不能直接使用 length 來獲取物件的長度,因為 JavaScript 物件并不是一種有序的集合,沒有長度的概念,
對于陣列或者類陣列物件,可以使用 .length 來獲取它們的長度,因為它們是有序集合,
對于字串也可以使用.length來獲取長度,因為字串也是有序集合,
使用 Object.keys() 方法來獲取物件的可列舉自有屬性的鍵的陣列,并使用陣列的 length 屬性來獲取物件的長度,例如:
let obj = {name: 'John', age: 30, city: 'New York'};
let length = Object.keys(obj).length;
console.log(length); //3
也可以使用 for...in 來遍歷物件中的所有鍵,并在遍歷程序中計數,例如:
let obj = {name: 'John', age: 30, city: 'New York'};
let count = 0;
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
count++;
}
}
console.log(count); // 3
對于物件來說有一點需要注意,如果物件沒有定義任何自有屬性,或者物件是一個繼承來的物件,它可能會包含一些繼承來的屬性,而 hasOwnProperty 方法只會檢查自有屬性,所以在使用 for...in 時應該使用 hasOwnProperty 來確保只遍歷了物件的自有屬性,
對于 ES6 的 Object.keys(obj) 和 Object.values(obj) 是在遍歷的同時會忽略繼承的屬性,所以可以不用 hasOwnProperty,
使用 Object.getOwnPropertyNames(obj).length ,這個方法會回傳一個陣列,里面是物件所有的鍵名,然后可以使用length來獲取長度,
let obj = {name: 'John', age: 30, city: 'New York'};
let length = Object.getOwnPropertyNames(obj).length;
console.log(length); // 3
使用 Object.getOwnPropertyNames 與 Object.keys 不同在于,它包括物件的不可列舉屬性(除了 Symbol 屬性),如果想要判斷物件自身的屬性,最好使用Object.keys,如果需要包括不可列舉屬性,那就使用Object.getOwnPropertyNames,
總結:
- 使用 Object.keys(obj).length 可以獲取物件的可列舉自有屬性長度
- 使用 Object.getOwnPropertyNames(obj).length 可以獲取物件的所有自有屬性長度,包括不可列舉屬性
- 使用
for...in回圈遍歷物件的屬性并計數的方法來獲取物件的長度,可通過該方法獲取所有屬性的長度(包括繼承來的屬性)
需要注意的是,這些方法是在 ES5 標準之后提出的,在老的瀏覽器中可能不支持,
作者:yuzhihui出處:http://www.cnblogs.com/yuzhihui/ 宣告:歡迎任何形式的轉載,但請務必注明出處!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/541884.html
標籤:其他
上一篇:權限控制在數堆疊產品的實踐
