获取对象内数组的长度
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 很有趣。我今天学到了一些新东西,谢谢!以上是关于获取对象内数组的长度的主要内容,如果未能解决你的问题,请参考以下文章