繁体   English   中英

遍历嵌套的对象文字数据

[英]Traverse nested Object Literal data

一直在浏览论坛,除非我做错了,否则我所见的解决方案都无法解决我的问题。 我试图列出连接到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...
}

使用此处问题的答案,我可以深入了解第2层嵌套数据,但是该状态的切入点似乎是阻碍。 我需要缩写的州名,因为这是单击状态时map API吐出的数据。 为了使这项工作可能需要执行哪些其他步骤? 似乎没有找到对象内对象的答案。 提前致谢!

编辑:一旦我意识到自己笨拙,并且这是对象文字,而不是JSON,我便找到了所需的确切答案。 我在这里找到答案

您只需要使用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)) 

您可以迭代并获得如下简称:

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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM