【问题标题】: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?

标签: javascript


【解决方案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 很有趣。我今天学到了一些新东西,谢谢!
猜你喜欢
  • 2019-12-11
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 2020-11-02
  • 2020-07-16
  • 2014-04-30
  • 1970-01-01
相关资源
最近更新 更多