获取对象内数组的长度

Posted

技术标签:

【中文标题】获取对象内数组的长度【英文标题】:Get length of array inside object 【发布时间】:2013-12-19 17:50:48 【问题描述】:

我在 javascript 中有以下对象:

objectX 是一个

Object names : Array[14]

我试图获取它的长度,但是当我使用 objectX.length 时它返回 undefined?

我正在 chrome 调试器中尝试它,并在谷歌上搜索,任何人都快告诉我 plz。

【问题讨论】:

你要Object的属性数量,还是Object.names的长度? 姓名长度@BenM 那么请查看已经发布的答案。 objectX | objectx? 【参考方案1】:
object.names.length

object['names'].length

【讨论】:

如果我使用 objectx.names 它返回 undefined 那么您的对象的定义与您提供的代码不同。 (你需要用你正在使用的任何变量名替换“object”......也许objectx.names.length 好的,如果我使用 Object.keys(objectx).length,这将返回 1。但我想要名称的长度。它说是chrome中的一个数组【参考方案2】:

从输出看来,属性名称是'name '。查看控制台输出的差异:

> console.log(names: []);
Object names: Array[0]

> console.log('names ': []);
Object names : Array[0]      // <- this looks like what you have
//           ^ note the space

所以你必须这样做:

obj['names '].length

我建议修改属性名称,以便您可以改用obj.name.length

【讨论】:

谢谢,我只是没想到! grrrr 花了最后 20 分钟甚至没有看那个! 下次你知道;)【参考方案3】:

修正你的对象符号:

var obj = name:Array(14);
alert(obj.name.length);

var obj = name : [1, 2, 3, 4];
alert(obj.name.length);

Fiddle

【讨论】:

Object names : Array[14] 是 Chrome 控制台的输出。它实际上不是 JS 代码。 @FelixKling 好吧,我误会了。虽然我不认为属性名称中的空格是有效的。 您可以使用任何字符串作为属性名称。但是如果属性不是有效的标识符,那么你不能使用dot notation (a.b)来访问它,你必须使用bracket notation i> (a['b'])。 @FelixKling 很有趣。我今天学到了一些新东西,谢谢!

以上是关于获取对象内数组的长度的主要内容,如果未能解决你的问题,请参考以下文章

获取json对象的长度

对象内List数组为空处理成长度为0的list

对象数组的对象。获取具有相同属性的所有值的长度

js获取数组长度,对象成员个数字符串字数

JS获取对象长度的方法

java 为啥数组名.length就能获取数组的长度