Javascript 获取对象中项目列表的长度?

Javascript Get length of list of items in object?

我目前有一个 Javascript 对象,如下所示:

Object {0: 8, 1: 9, 2: 10}

我正在尝试获取对象中单个项目的数量(即 3),但不知道如何操作。由于对象不是数组,我不能只调用 .length()。我尝试 huntsList[2].toString().split('.').length 在逗号处拆分项目并以这种方式计算它们,但它 returns 1,因为它将整个对象转换为单个字符串,如下所示:["[object Object]"]

如有任何关于如何实现此目标的建议,我们将不胜感激。

您可以使用 Object.keys 获取密钥,其中 returns 一个密钥数组:

Example

var obj = {0: 8, 1: 9, 2: 10};

var keys = Object.keys(obj);

var len = keys.length

您可以使用 Object.keys()。它 returns 一个对象的键数组。

var myObject = {0: 8, 1: 9, 2: 10};
console.log(Object.keys(myObject).length)

1: ES5.1解决方案使用Object.keys - returns给定对象自身可枚举属性的数组

var obj = {
  0: 8,
  1: 9,
  2: 10
}
console.log(Object.keys(obj).length)

2:ES5 之前的解决方案:使用 for..in 和 hasOwn

var obj = {
  0: 8,
  1: 9,
  2: 10
};

var propsLength = 0;
for (prop in obj) {
  if (obj.hasOwnProperty(prop)) {
    propsLength = propsLength + 1;
  }
}
console.log(propsLength);

3:库方案:使用lodash/underscore转成数组,查询长度,如果需要纯js方案,可以看看toArray的实现方式

console.log(_.toArray({
  0: 8,
  1: 9,
  2: 10
}).length)
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>

var obj = {0: 8, 1: 9, 2: 10};
alert(Object.keys(obj).length);

用这段代码,尝试提醒你对象的长度!