循环遍历嵌套的json对象

Looping through nested json object

本文关键字:json 对象 嵌套 遍历 循环      更新时间:2023-09-26

我有一个设计糟糕的JSON对象,不幸的是,我现在无法更改它,它包含许多对象。以下是我正在使用的示例:

var land = [
    {"name":"city","value":"Los Angeles"},
    {"name":"state","value":"California"},
    {"name":"zip","value":"45434"},
    {"name":"country","value":"USA"}
];

以下是我如何循环通过I:

$(document).ready(function(){
    $.each(land, function(key,value) {
      $.each(value, function(key,value) {
          console.log(key + ' : ' + value);
      })
    }); 
})

结果如下:

name : city
value : Los Angeles
name : state
value : California
name : zip
value : 45434
name : country
value : USA

我的目标是得到这样的结果:

city : Los Angeles
state : California
zip : 45434
country: USA

我在这里错过了什么?我如何达到预期效果?提前感谢:(

您可以使用ecmascript 5的forEach方法:

land.forEach(function(entry){ 
      console.log(entry.name + " : " + entry.value) 
} );

或者使用jquery来支持传统的web浏览器:

$.each(land,function(index,entry) {
     console.log(entry.name + " : " + entry.value)
});

不要循环子对象,只显示其属性。

var land = [{
  "name": "city",
  "value": "Los Angeles"
}, {
  "name": "state",
  "value": "California"
}, {
  "name": "zip",
  "value": "45434"
}, {
  "name": "country",
  "value": "USA"
}];
$.each(land, function(index, object) {
    console.log(object.name, ": ", object.value);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

您只需要一个forEach()循环就可以得到这个结果。

var land = [{
  "name": "city",
  "value": "Los Angeles"
}, {
  "name": "state",
  "value": "California"
}, {
  "name": "zip",
  "value": "45434"
}, {
  "name": "country",
  "value": "USA"
}];
land.forEach(function(e) {
  console.log(e.name + ' : ' + e.value);
})

不要遍历对象。您只需要一个循环就可以实现这一点。

 $(document).ready(function(){
                $.each(land, function(key,value) {
                      console.log(value.name + ' : ' + value.value);
                }); 
            })

如果所有对象(namevalue(中的属性名称都相同,则执行类似操作。

$.each(land, function(key,value) {
  console.log(value.name + ' : ' + value.value);
}); 
var converter = function(object){
    return {city: object[0].value,
           state: object[1].value,
           zip: object[2].value,
           country: object[3].value
    }
}
converter(land)

对象{城市:"洛杉矶",州:"加利福尼亚",邮编:"45434",国家:"美国"}