【问题标题】:jQuery: Display the name of key and value of Json ArrayjQuery:显示 Json 数组的键名和值
【发布时间】:2016-03-02 10:40:54
【问题描述】:

我有一个json数组,如下图:

var data =[{"id":"1","name1":"avi", "age":"20"},{"id":"2","name1":"suresh","age":"30"}, {"id":"3","name1":"rajesh", "age":"40"}];

我可以检索键值对或通过键获取值。但是这里第二个位置的键名(name1)不是恒定的(可以是任何东西)。我所知道的是我应该能够在每个数组的第二个位置获取键的名称并显示它的值。我就是这样做的:

var data =[
{"id":"1","name1":"avi", "age":"20"},
{"id":"2","name1":"suresh","age":"30"},
{"id":"3","name1":"rajesh", "age":"40"}
];

var keys = [];
$.each(data, function(key1, value){
  if(key1 == 0){
    $.each(value, function(k,v){
      keys.push(k);
    });
  }
  console.log(keys[1]+ "::"+value[keys[1]]);   
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

我可以得到结果

但我认为还有更好更干净的方法可以做。如果有请告诉我。

对于每个对象,我如何通过 obj[2].key 和 obj[2].value 之类的操作来获取各自的键值对??

【问题讨论】:

    标签: jquery json


    【解决方案1】:

    如果你知道钥匙,你可以试试

    for(var i in data)
    {
       var name = data[i].name1;
       console.log(name);
    }
    

    评论中的其他链接是最佳选择。

    【讨论】:

      【解决方案2】:

      这将为您提供第二个位置的对象值

       $.each(data, function(key1, value){
        if(key1===1)
          var x = data[key1];
        }
      

      【讨论】:

      • 但是对象是非索引集合,没有理由所有浏览器都会对它进行相同的解析,这意味着未知键仍将位于第二个位置。编辑:实际上在 OP 的代码中,数据是一个数组,这里你返回数组的第二项,这不是问题
      • 是的,我很抱歉我的坏..请不要考虑这个答案
      【解决方案3】:

      如果您想获取未知密钥并且您知道其他密钥,则可以使用object keys property(检查浏览器支持)并将其过滤掉:

      var knownKeys = ['id','age'];
      var keyName = Object.keys(data[0]).filter(function(k){return knownKeys.indexOf(k) === -1;}).toString(); // >> name1
      

      -jsFiddle-

      【讨论】:

        【解决方案4】:

        你的意思是这样的吗?

        对象键返回对象键数组

        var key = Object.keys(obj)[0] //This contains the id
        obj[key] //This contains the value
        

        没有 jquery 的另一种方式

        // Code goes here
        var data =[
        {"id":"1","name1":"avi", "age":"20"},
        {"id":"2","name1":"suresh","age":"30"},
        {"id":"3","name1":"rajesh", "age":"40"}
        ];
        
        //Just to get the logic
        for(var el in data){
        
              var obj = data[el];
              var keys = Object.keys(obj); //Returns array of keys
        
              for(var i in keys){
                var key = keys[i]
        
                console.log(key+" "+obj[key]);
              }
        }
        

        这里是一个笨蛋https://plnkr.co/edit/K4xM1X2xeNSyf3BrBCRs?p=preview

        【讨论】:

          【解决方案5】:

          对象的属性没有顺序,因此您必须更改策略,例如创建一个名为“name”的键,其中包含两个值的数组,[name1, avi],其中 name1 是动态的礼节。

          var data =[
          {"id":"1", "name": ["name1","avi"], "age":"20"},
          {"id":"2", "name": ["name2","blabla"],"age":"30"},
          {"id":"3", "name": ["name3","hello"], "age":"40"}
          ];
          
          
          data.forEach(function(element, index, array){
            document.body.innerHTML += ('the ' + element.name[0] + ' is ' +     element.name[1] + '<br>')
          });

          【讨论】:

            猜你喜欢
            • 2021-03-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-08-18
            相关资源
            最近更新 更多