如何用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
相关产品推荐
相关产品推荐

