0

一直在尋找通過論壇,並沒有我見過的解決方案已爲我的情況工作,除非我做錯了。我試圖列出連接到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

+1

這不是JSON。這是一個JavaScript對象文字。這些條款不可互換。 –

+0

謝謝。我已經更新了這個問題,併發布了我發現的答案 –

回答

2

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

+0

這讓我點亮了數組中的狀態,但是我將如何能夠專注於一個(動態)並從給定狀態內部獲取值? –

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/

+1

我相信這是更符合我正在尋找的線路。唯一的問題是,國家縮寫本質上是動態的,我需要弄清楚如何動態輸入數據。這是我想弄清楚的。我很欣賞開局! –