2015-07-10 53 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