【问题标题】:Traverse nested Object Literal data遍历嵌套的 Object Literal 数据
【发布时间】:2017-02-17 20:35:25
【问题描述】:

一直在浏览论坛,除非我做错了,否则我所看到的任何解决方案都不适用于我的案例。我正在尝试列出连接到 jQuery 地图插件的不同状态的数据。基本上,用户将单击一个州,州法律将附加在地图下方。现在我的 JSON 树看起来像:

var states = {
   "AL" : {
       "longname" : "Alabama",
       "lawOne" : "Text for Law 1",
       "lawTwo" : "Text for Law 2",
       "lawThree" : "Text for Law 3"
   },
   "AK" : {
       "longname" : "Alaska",
       "lawOne" : "Text for Law 1",
       "lawTwo" : "Text for Law 2",
       "lawThree" : "Text for Law 3"
   },
   etc...
}

使用问题here 的答案,我可以深入了解第 2 层嵌套数据,但状态的入口点似乎是暂停。我需要缩写的状态名称,因为这是单击状态时地图 API 吐出的数据。知道为了使这项工作可能需要实施哪些其他步骤吗?似乎没有在对象中找到对象的答案。提前致谢!

编辑:一旦我意识到我很笨拙并且这是一个对象文字而不是 JSON,我就找到了我正在寻找的确切答案。我找到了答案here

【问题讨论】:

  • 那不是 JSON。那是一个 JavaScript 对象字面量。这些术语不可互换。
  • 谢谢。我已经更新了问题并发布了我找到的答案

标签: javascript multidimensional-array nested traversal object-literal


【解决方案1】:

您只需要使用Object.keys() 来获取定义为state 对象属性的缩写名称。

var states = {
   "AL" : {
       "longname" : "Alabama",
       "lawOne" : "Text for Law 1",
       "lawTwo" : "Text for Law 2",
       "lawThree" : "Text for Law 3"
   },
   "AK" : {
       "longname" : "Alaska",
       "lawOne" : "Text for Law 1",
       "lawTwo" : "Text for Law 2",
       "lawThree" : "Text for Law 3"
   }
}

console.log(Object.keys(states))

【讨论】:

  • 这让我得到了数组中的一些状态,但是我如何能够(动态地)专注于一个状态并从给定状态中获取一个值?
【解决方案2】:

您可以像这样迭代并获得短名称:

var states = {
   "AL" : {
       "longname" : "Alabama",
       "lawOne" : "Text for Law 1",
       "lawTwo" : "Text for Law 2",
       "lawThree" : "Text for Law 3"
   },
   "AK" : {
       "longname" : "Alaska",
       "lawOne" : "Text for Law 1",
       "lawTwo" : "Text for Law 2",
       "lawThree" : "Text for Law 3"
   }
}

for (var key in states) {
  if (states.hasOwnProperty(key)) {
    var val = states[key];
    console.log(key + ':' + val.longname);
  }
}

JSFiddle:https://jsfiddle.net/12bor11u/1/

【讨论】:

  • 我相信这更符合我正在寻找的路线。唯一的问题是状态缩写本质上是动态的,我需要弄清楚如何动态输入该数据。不过,这是我要弄清楚的。我很欣赏这个领先的开始!
猜你喜欢
  • 2018-07-12
  • 2017-07-23
  • 1970-01-01
  • 2018-07-17
  • 2021-06-16
  • 2017-05-13
  • 2017-09-08
  • 1970-01-01
  • 2021-05-28
相关资源
最近更新 更多