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

如何用JavaScript解析两组JSON数据并运用嵌套循环?

如何用JavaScript解析JSON数据并使用嵌套循环?

嘿,我来帮你搞定这个问题!首先得明确一点:你给出的response1和response2看起来已经是解析后的JavaScript数组/对象了——如果是从API拿到的原始JSON字符串,你才需要用JSON.parse()转换,但现在你直接用这些变量就行。不过我还是会把两种情况都讲清楚~

第一步:解析JSON字符串(如果需要的话)

如果你的API返回的是原始JSON格式的字符串(比如用fetch获取响应时,需要先转成JSON),那你得先把它解析成JS能直接操作的对象/数组:

// 假设response1是原始JSON字符串
const parsedResponse1 = JSON.parse(response1);
// response2同理
const parsedResponse2 = JSON.parse(response2);

但你现在的变量已经是解析好的结构,所以这一步可以跳过啦。

第二步:遍历数据(含嵌套循环示例)

遍历response1(简单对象数组)

response1是一个存储地点信息的数组,你可以用多种方式遍历它:

// 用forEach遍历,适合简单的遍历操作
response1.forEach(place => {
  console.log(`地点ID: ${place.placeid}, 名称: ${place.place_name}, 所在城市: ${place.city}`);
});

// 用for...of循环,适合需要中断/跳过的场景
for (const place of response1) {
  if (place.state === "california") {
    console.log(`加州的地点:${place.place_name}`);
    continue; // 跳过后续逻辑
  }
  console.log(`其他州的地点:${place.place_name}`);
}

遍历response2(带嵌套结构的数组)

response2里的每个元素都包含嵌套的usage_statistics对象,咱们先补全一下它的完整结构方便演示(你写的session_info...我假设是一个会话数组):

const response2 = [
  {
    "manufacturer":"apple",
    "market_name":"apple_market1",
    "codename":"xx",
    "model":"iphone",
    "usage_statistics":{
      "session_info": [
        { "session_id": 1, "duration": 30 },
        { "session_id": 2, "duration": 45 }
      ]
    }
  },
  {
    "manufacturer":"samsung",
    "market_name":"samsung_market1",
    "codename":"yy",
    "model":"galaxy",
    "usage_statistics":{
      "session_info": [
        { "session_id": 3, "duration": 20 },
        { "session_id": 4, "duration": 50 }
      ]
    }
  }
];

接下来用嵌套循环遍历外层的产品,再遍历内层的会话信息:

// 外层循环:遍历每个产品
response2.forEach(product => {
  console.log(`=== 产品信息 ===`);
  console.log(`厂商:${product.manufacturer}, 型号:${product.model}`);
  
  // 内层循环:遍历该产品的所有会话记录
  product.usage_statistics.session_info.forEach(session => {
    console.log(`  会话ID:${session.session_id}, 时长:${session.duration}分钟`);
  });
});

// 或者用for...of嵌套循环,逻辑一样
for (const product of response2) {
  console.log(`市场名称:${product.market_name}`);
  for (const session of product.usage_statistics.session_info) {
    console.log(`  会话时长:${session.duration}分钟`);
  }
}

避坑小提示

如果嵌套的属性可能不存在(比如有的产品没有usage_statistics),记得用**可选链操作符?.**做判断,避免报错:

response2.forEach(product => {
  // 先判断session_info是否存在,再遍历
  if (product.usage_statistics?.session_info) {
    product.usage_statistics.session_info.forEach(session => {
      console.log(`会话ID:${session.session_id}`);
    });
  } else {
    console.log(`该产品无会话数据`);
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:18:52