You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中遍历JSON对象及指定对象集合

嘿,我来帮你搞定这两个遍历相关的问题!

1. 如何在JavaScript中遍历JSON对象?

首先得明确:JSON本质是字符串格式,所以第一步必须先把它转换成JavaScript对象,用JSON.parse()方法完成转换。之后就可以用JS里遍历对象的常用方式了,下面给你几种实用的方法:

  • 方式一:for...in循环(经典写法)
    这是最传统的遍历对象键名的方式,建议搭配hasOwnProperty()方法,避免遍历到对象原型链上的额外属性(如果不需要的话)。
// 示例JSON字符串
const jsonStr = '{"name": "Alice", "age": 25, "isStudent": true}';
// 解析为JavaScript对象
const obj = JSON.parse(jsonStr);

// 开始遍历
for (const key in obj) {
  // 确保只处理对象自身的属性
  if (obj.hasOwnProperty(key)) {
    console.log(`键:${key},对应值:${obj[key]}`);
  }
}
  • 方式二:Object.keys() + forEach
    Object.keys()会返回一个包含对象所有可枚举键名的数组,再结合forEach就能轻松遍历:
const obj = JSON.parse(jsonStr);
Object.keys(obj).forEach(key => {
  console.log(`键:${key},对应值:${obj[key]}`);
});
  • 方式三:Object.entries() 直接拿键值对
    Object.entries()会返回一个二维数组,每一项都是[键名, 值]的组合,不管用forEach还是for...of都很方便:
const obj = JSON.parse(jsonStr);

// 用forEach遍历
Object.entries(obj).forEach(([key, value]) => {
  console.log(`键:${key},对应值:${value}`);
});

// 或者用for...of循环
for (const [key, value] of Object.entries(obj)) {
  console.log(`键:${key},对应值:${value}`);
}
2. 如何遍历你给出的嵌套对象?

你提供的这个结构是一个JavaScript嵌套对象(不是JSON字符串哦),外层有test1、test2、test3三个键,每个键对应一个子对象。可以根据你的需求选择不同的遍历方式:

需求一:只遍历外层的test1/test2/test3

用上面提到的方法都能实现,这里用Object.entries()举个例子:

const targetObj = {
  test1: { name: "1", fa: true },
  test2: { name: "2", fa: false },
  test3: { name: "3", fa: true }
};

// 遍历外层对象的键和对应子对象
for (const [outerKey, subObj] of Object.entries(targetObj)) {
  console.log(`外层键:${outerKey}`);
  console.log(`对应的子对象:`, subObj);
}

需求二:同时遍历外层和子对象的属性

可以嵌套遍历,把外层和内层的属性都处理到:

for (const [outerKey, subObj] of Object.entries(targetObj)) {
  console.log(`=== 外层键:${outerKey} ===`);
  // 遍历子对象的每个属性
  for (const [innerKey, value] of Object.entries(subObj)) {
    console.log(`子属性:${innerKey},值:${value}`);
  }
}

如果喜欢用forEach风格,也可以这么写:

Object.entries(targetObj).forEach(([outerKey, subObj]) => {
  console.log(`=== 外层键:${outerKey} ===`);
  Object.entries(subObj).forEach(([innerKey, value]) => {
    console.log(`子属性:${innerKey},值:${value}`);
  });
});

内容的提问来源于stack exchange,提问作者user9331278

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:40:02