很难在对象数组中显示一个键

时间:2018-01-21 15:56:14

标签: javascript php arrays multidimensional-array

enter image description here

我想在控制台中打印环绕的,但我有一段时间访问它。所以,如果我想访问“Vignesh”有一个“好”的评论,并假设结果是指树的根,我的代码将是

 console.log(result["Vignesh"]["comments"][0]["A"]);

如何访问评论的关键字? “A”,“B”和“C”?因为生病把它放在一个for循环中,所以它会显示他/她的所有评论。

显示姓名(“Gokul”,“kavin”等)的初始代码及其所有评论。

 for(var key in result){ //key returns Gokul, Kavin etc
        for(var key2 in result[key].comments){    //key2 returns exm 0 1 2 in comments
           console.log(result[key]["comments"][key2]["A"].....);
        }
   }

3 个答案:

答案 0 :(得分:0)

这将有效:

for(var key in result){ //key returns Gokul, Kavin etc
    for(var key2 in result[key].comments){    //key2 returns exm 0 1 2 in comments
       var comment = result[key]["comments"][key2];
       console.log(comment[Object.keys(comments)[0]]);
    }
}
顺便说一句,在可能的情况下,为了便于阅读,最好使用点符号而不是方括号。所以result[key].comments代替result[key]["comments"]

答案 1 :(得分:0)

获取对象属性名称的关键是使用Object.keys()。如果您控制后端,我建议将注释结构重新编码为更易读的格式,如comments: [{name: 'A' , text: 'good'}]。话虽如此,以下是使用Object.keys()获取当前数据模型所需信息的方法:



var result = {
  Vignesh: {
    avgrating: 2.33,
    comments: [
      {A: "good"},
      {B: "Bad"},
      {B: "so good"},
    ]    
  }
}

for (var topLevelUser in result){
  if  (result.hasOwnProperty(topLevelUser) && result[topLevelUser].comments){
    console.log(topLevelUser);
    
    var comments = result[topLevelUser].comments;
    
    comments.forEach(function(comment){
      var subUser = Object.keys(comment)[0];
      var text = comment[subUser];
      
      console.log(subUser, '=>', text)
    });    
  }
}




答案 2 :(得分:-1)

这样做:

result["Vignesh"]["comments"][0].forEach(function(value,key){console.log('Comment '+key+': '+value+'; ')});