2015-07-10 55 views
-1

我有這樣的對象(我不能改變它,它從外部Web服務卡梅斯),我想所有的ID,(內部數據結構可能會發生變化)裏面找對象的對象內部的陣列中的所有鍵

data: { 
    consoles:[ 
     { 
      name:'', 
      id:'' 
     }, 
     { 
      name:'', 
      id:'' 
     } 
    ], 
    games:[ 
     { 
      name:'', 
      id:'' 
     }, 
     { 
      name:'', 
      id:'' 
     } 
    ], 
    accesories:[ 
     { 
      name:'', 
      id:'' 
     }, 
     { 
      name:'', 
      id:'' 
     } 
    ]  
} 

我試圖讓與Object.keys(數據)對象的所有按鍵,之後做了嘗試打印

var keys = Object.keys(data); 
for(var j = 0; j < keys.length; j++){ 
    console.log(keys[j]); 
    for(var i = 0; i < data.keys[j].length; i++){ 
     console.log(data.keys[j].id) 
    } 
} 
+2

哪裏是'公關oductsKeys'定義? – Patel

+0

對不起,它是一個打字錯誤,productsKeys是鍵 – gil13

+0

你的結果是什麼 – EasyBB

回答

1

試試這個: -

var productsKeys = Object.keys(data); 
for(var j = 0; j < productsKeys.length; j++){  
    for(var i = 0; i < data[productsKeys[j]].length; i++){   
    console.log(data[productsKeys[j]][i].id) 
    } 
} 

Demo

+1

謝謝學習者,這個修復我的第一個想法,效果很好! – gil13

0

,這裏是我的嘗試是你如何能做到這一點

data = { 
 
    consoles:[ 
 
     { 
 
      name:'', 
 
      id:'' 
 
     }, 
 
     { 
 
      name:'', 
 
      id:'' 
 
     } 
 
    ], 
 
    games:[ 
 
     { 
 
      name:'', 
 
      id:'' 
 
     }, 
 
     { 
 
      name:'', 
 
      id:'' 
 
     } 
 
    ], 
 
    accesories:[ 
 
     { 
 
      name:'', 
 
      id:'' 
 
     }, 
 
     { 
 
      name:'', 
 
      id:'' 
 
     } 
 
    ]  
 
} 
 
    
 

 
    
 
$.each(data,function(key,val){ 
 
    $.each(data[key],function(k,v){ 
 
     $.each(v,function(kf,vf){ 
 
      console.log(kf + "---->" + vf); 
 
     }); 
 
    }); 
 
}); 
 

+0

@ gil13 chek我更新的嘗試 –

+0

謝謝Himesh,工作正常! – gil13

+0

@ gil13 welcom哥們請接受作爲答案,如果你有你需要的。或upvote –

0
for(var i=0; i<data.consoles.length;i++){ 
console.log(data.consoles[i].id); 
} 

for(var i=0; i<data.games.length;i++){ 
console.log(data.games[i].id); 
} 

for(var i=0; i<data.accessories.length;i++){ 
console.log(data.accessories[i].id); 
} 

如果遊戲機,遊戲,配件陣列具有laways相同的長度,我們可以僅使用一個for

+0

謝謝,但應該是動態的,遊戲,遊戲機等可能會改名 – gil13

1

嘗試更換data.keys[j]有:

data[keys[j]] 

因此,這爲您提供了:

var keys = Object.keys(data); 
for(var j = 0; j < keys.length; j++){ 
    console.log(keys[j]); 
    for(var i = 0; i < data.keys[j].length; i++){ 
     console.log(data[keys[j]].id) 
    } 
} 
+0

不工作,我需要通過'我'迭代到第二個循環的結果 – gil13