使用 for...in 循环是一种遍历 JSON 对象的常见方法。这个循环会遍历对象的可枚举属性,因此在遍历时需要检查属性是否属于对象本身而不是继承的属性。以下是一个简单的例子:
// JSON 格式的对象
var jsonObject = {
  "name": "John",
  "age": 30,
  "city": "New York"
};

// 使用 for...in 循环遍历对象的属性
for (var key in jsonObject) {
  if (jsonObject.hasOwnProperty(key)) {
    console.log(key + ": " + jsonObject[key]);
  }
}

在这个例子中,for (var key in jsonObject) 遍历了 jsonObject 对象的所有可枚举属性。在循环体内,通过 jsonObject.hasOwnProperty(key) 检查属性是否属于对象本身,而不是继承的属性。这是因为 for...in 循环也会遍历对象的原型链上的属性,使用 hasOwnProperty() 过滤掉继承的属性。

请注意,for...in 循环遍历对象的属性顺序不是固定的,因此不要依赖于属性的遍历顺序。如果需要确保顺序,应该使用数组或 Map。
// JSON 格式的数组
var jsonArray = [
  {"name": "John", "age": 30, "city": "New York"},
  {"name": "Alice", "age": 25, "city": "Los Angeles"},
  {"name": "Bob", "age": 35, "city": "Chicago"}
];

// 使用 for...in 循环遍历数组的索引
for (var index in jsonArray) {
  if (jsonArray.hasOwnProperty(index)) {
    console.log("Person " + (parseInt(index) + 1) + ":");
    var person = jsonArray[index];
    for (var key in person) {
      if (person.hasOwnProperty(key)) {
        console.log("  " + key + ": " + person[key]);
      }
    }
  }
}

在这个例子中,for (var index in jsonArray) 遍历了数组的索引,然后通过 jsonArray[index] 获取数组元素。同样,在内部的 for...in 循环中使用 hasOwnProperty() 检查属性。


转载请注明出处:http://www.zyzy.cn/article/detail/4541/JSON