我有一个变量如下:
var keyValues={
key1:{
----------
},
key2:{
----------
}
}
如何找到keyValues的长度?就像我需要keyValues.length=2
。
答案 0 :(得分:6)
有几种方法可以做到这一点。最简单的方法是使用Object.keys
(documentation):
console.log(Object.keys(keyValues).length);
这基本上相当于:
var count = 0;
for(var key in keyValues){
if(keyValues.hasOwnProperty(key)) count++;
}
console.log(count):
请注意,只计算属于对象本身的键,而不是对象原型链上的键。如果您需要计算所有键(包括原型链中的键),只需忽略上面hasOwnProperty
的调用:
var count = 0;
for(var key in keyValues){
count++;
}
console.log('all keys, including prototype chain: ' + count):
请注意,这些方法不会计算未标记为可枚举的属性,这可能正是您想要的。如果你真的想要得到最后的东西(包括被标记为可枚举的东西),你将不得不使用Object.getOwnPropertyNames()
(documentation)并自己走原型链。就像我说的,这可能不是你想要的:如果有人为了使一个属性不可枚举而麻烦,那是因为他们不想要枚举它。只是确保我的答案涵盖所有基础!
答案 1 :(得分:2)
Object.keys(keyValues).length;
答案 2 :(得分:0)
Object.keys(keyValues).length
会奏效。但是,如果它也包含继承的属性。要获得对象的属性,您需要使用Object.hasOwnProperty(key)
。