【问题标题】:Dynamically Reading Array Values form a JSON Object从 JSON 对象动态读取数组值
【发布时间】:2012-06-22 16:28:27
【问题描述】:

我正在研究一个接受 JSON 对象作为参数的函数。传入的对象的每个属性都是一个数组。我需要确定每个数组的长度。

我不会提前知道的是:属性的名称,或者有多少属性。

如何确定每个数组的长度?同样,我不能明确引用任何属性/键,因为我不会提前知道它们的名称。如何将每个未知属性引用为数组?

提前谢谢你, -RS

【问题讨论】:

标签: javascript arrays


【解决方案1】:

您可以使用for...in 循环遍历对象以访问每个属性。

for (var key in myObject) {
  // Check to make sure the property is not part of the `Object` prototype (eg. toString)
  if (myObject.hasOwnProperty(key)) {
    console.log(key, myObject[key].length);
  }
}

在上面的示例中,我们遍历对象myObject 的属性并注销它们的长度值(假设它们都是数组)。

如果“JSON 对象”是指它是 JSON 字符串,则可以首先使用 myObject = JSON.parse(myObject)(适用于现代浏览器)或被认为不安全的 myObject = eval("(" + myOjbect + ")") 将 myObject 解析为真正的对象(但适用于所有浏览器)。解析后,您可以使用上述技术来细化数组长度。

注意:由于您更新了帖子以指定对象是 JSON,您可能不需要hasOwnProperty 检查,但始终使用此测试更安全。

【讨论】:

  • 动作杰克:谢谢。这是我使用的方法,但现在我看到了我所缺少的。我将使用您的变量名来说明:我试图在 for...in 循环中使用 myObject 而不是 myObject[key] 来引用数组。因此,myObject.length 只返回包含键名的字符串的长度。谢谢!
  • 啊...是的,您假设了 ES6 中新的 for...of 循环的功能 :) developer.mozilla.org/en/JavaScript/Reference/Statements/… 不幸的是,您必须等待一段时间才能使用它。跨度>
  • Correction": 我试图在 for...in 循环中使用 key 而不是 myObject[key] 来引用数组。因此,key.length 只是返回包含键的字符串的长度名字。
【解决方案2】:

使用JSON.parse将JSON数据转换为JS对象,然后可以使用Array的长度等属性。

var myObject = JSON.parse(myJSONtext, reviver);

JSON 参考:http://www.json.org/js.html

【讨论】:

  • 谢谢,但我没有问如何解析。
猜你喜欢
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 2014-08-10
  • 2011-08-03
  • 1970-01-01
  • 2023-03-31
  • 2018-01-24
相关资源
最近更新 更多