📜  遍历 json 对象 - Javascript (1)

📅  最后修改于: 2023-12-03 15:12:26.921000             🧑  作者: Mango

遍历 JSON 对象 - JavaScript

在 JavaScript 中,我们可以使用 JSON.parse() 函数将 JSON 字符串转换为 JavaScript 对象。接下来我们可以使用循环、递归或者其他方法来遍历这个对象。

以下是一些遍历 JSON 对象的方法:

1. 循环遍历

我们可以使用 for...in 循环来遍历对象的属性,并且使用 hasOwnProperty() 方法来过滤掉继承来的属性。

const obj = { name: 'Jack', age: 18, address: { city: 'New York', state: 'NY' } };

for (let key in obj) {
  if (obj.hasOwnProperty(key)) {
    console.log(`${key}: ${obj[key]}`);
  }
}

输出结果:

name: Jack
age: 18
address: [object Object]

注意,address 属性的值是一个嵌套的对象,我们需要进一步遍历。

2. 递归遍历

由于 JSON 对象的结构可能是嵌套的,我们可以使用递归来深度遍历每个节点。

function traverse(obj) {
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      if (typeof obj[key] === 'object') {
        traverse(obj[key]); // 递归遍历子节点
      } else {
        console.log(`${key}: ${obj[key]}`);
      }
    }
  }
}

const obj = { name: 'Jack', age: 18, address: { city: 'New York', state: 'NY' } };
traverse(obj);

输出结果:

name: Jack
age: 18
city: New York
state: NY
3. 遍历数组

JSON 对象中也可能包含数组,我们可以使用 forEach() 方法来遍历数组中的每个元素。

const data = [
  { name: 'Jack', age: 18 },
  { name: 'Alice', age: 20 },
  { name: 'Bob', age: 25 },
];

data.forEach((item, index) => {
  console.log(`[${index}] ${item.name}: ${item.age}`);
});

输出结果:

[0] Jack: 18
[1] Alice: 20
[2] Bob: 25
4. 使用第三方库

如果你不想编写自己的遍历函数,可以使用许多第三方库来处理 JSON 对象和数组,例如 Underscore.jsLodash

const data = [
  { name: 'Jack', age: 18 },
  { name: 'Alice', age: 20 },
  { name: 'Bob', age: 25 },
];

_.forEach(data, (item, index) => {
  console.log(`[${index}] ${item.name}: ${item.age}`);
});

输出结果和上面的例子一样。