如何在Javascript变量中找到键的数量?

use*_*903 5 javascript jquery

我有一个变量如下:

var keyValues={
  key1:{
  ----------
  },
  key2:{
  ----------
  }
}
Run Code Online (Sandbox Code Playgroud)

如何找到keyValues的长度?像我需要的那样keyValues.length=2.

Eth*_*own 6

有几种方法可以做到这一点.最简单的是使用Object.keys(文档):

console.log(Object.keys(keyValues).length);
Run Code Online (Sandbox Code Playgroud)

这基本上相当于:

var count = 0;
for(var key in keyValues){
    if(keyValues.hasOwnProperty(key)) count++;
}
console.log(count):
Run Code Online (Sandbox Code Playgroud)

请注意,只计算属于对象本身的键,而不是对象原型链上的键.如果您需要计算所有键(包括原型链中的键),只需省略对hasOwnProperty上面的调用:

var count = 0;
for(var key in keyValues){
    count++;
}
console.log('all keys, including prototype chain: ' + count):
Run Code Online (Sandbox Code Playgroud)

请注意,这些方法不会计算未标记为可枚举的属性,这可能正是您想要的.如果你真的想要得到最后的东西(包括标记为可枚举的东西),你将不得不使用Object.getOwnPropertyNames()(文档)并自己走原型链.就像我说的,这可能不是你想要的:如果有人为了使一个属性不可枚举而麻烦,那是因为他们不想要枚举它.只是确保我的答案涵盖所有基础!