【发布时间】:2014-03-08 12:16:05
【问题描述】:
我有一个变量如下:
var keyValues={
key1:{
----------
},
key2:{
----------
}
}
如何找到 keyValues 的长度?就像我需要keyValues.length=2。
【问题讨论】:
标签: javascript jquery
我有一个变量如下:
var keyValues={
key1:{
----------
},
key2:{
----------
}
}
如何找到 keyValues 的长度?就像我需要keyValues.length=2。
【问题讨论】:
标签: javascript jquery
有几种方法可以做到这一点。最简单的就是使用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) 并自己走原型链。就像我说的,这可能不是你想要的:如果有人不厌其烦地让一个属性不可枚举,那是因为他们不希望它被枚举。只要确保我的答案涵盖所有基础!
【讨论】:
Object.keys(keyValues).length;
【讨论】:
Object.keys(keyValues).length 可以。但是,如果它也包括继承的属性。要仅获取对象的属性,您需要使用Object.hasOwnProperty(key)。
【讨论】: