2013-04-09 94 views
1

以下是我的json結構。在collection.fetch()的成功我正在循環結構。如何從集合中獲取json對象鍵名並迭代

目前我使用

this.collection.each(function(model) { .. } 

如何獲得像植物,動物,而是使用名稱循環鍵名。

JSON

var jsonObj = {   // 0 - recommended , 1 - New 
    "plants" : [ 

     { 
     "title" : "title1", 
      "desc": "description.." 
     }, 
      { 
     "title" : "titl2", 
      "desc": "description." 
     }  
    ], 
    "animals" : [ 

     { 
     "title" : "title1", 
      "desc": "description.." 
     }, 
      { 
     "title" : "titl2", 
      "desc": "description." 
     }  
    ] 
}; 

收集的快照

enter image description here

+1

我會嘗試'this.collection ['animals']'等 – akonsu 2013-04-09 14:38:31

+0

不,我不會知道這個名字......我需要從對象中獲得。 – user1184100 2013-04-09 14:41:44

+2

'Object.keys(jsonObj)' – 2013-04-09 14:46:30

回答

2

您可以使用下劃線keys得到的名單:

var thenames =_.keys(yourobject); 

在這種情況下thenames將包含您正在查找的密鑰列表。下面是它的文檔:

http://underscorejs.org/#keys

keys_.keys(對象) 檢索對象的屬性的所有名稱。

_.keys({one:1,two:2,three:3}); => [ 「一」, 「二」, 「三」]

+0

我試圖this.collection.fetch({ 成功:功能(數據){ data.each(函數(項目){ \t \t \t \t \t的console.log(_鍵(item.attributes)); \t \t \t \t \t}); } });我得到Uncaught TypeError:不能調用未定義的方法'keys' – user1184100 2013-04-09 14:51:32

+0

在你的例子中它將是_.keys(jsonObj)。 – lucuma 2013-04-09 15:03:48

3

這會工作,但你會使用一個正常的循環,而不是 「每個」:

for(i in jsonObj){ 
    alert(i); 
} 

這裏是一個fjsfiddle :http://jsfiddle.net/r5nwP/

這就是你所追求的?

+0

在使用for(i在jsonObj)時要小心{...}它不僅會遍歷對象的所有屬性名稱,還會遍歷所有父對象的屬性名稱。 在上面的例子中,如果有人,在JavaScript的其他地方加載了Object.prototype.blah = 42;那麼「blah」也會被提醒。 建議您在for語句中包含一個if語句,例如:if(jsonObj.hasOwnProperty(i)),以便僅查看jsonObj的屬性而不查看父對象。 – ajb 2013-04-11 15:30:53

+0

好的,很酷。非常好知道。 – dgig 2013-04-12 15:01:47