如何访问API返回JSON中的eldSettings数组与tags对象属性
访问嵌套JSON中的数组与属性
针对你提供的API返回数据,要访问eldSettings下的rulesets数组,以及tags数组里的对象属性,你可以通过链式访问结合数组循环来实现,以下是具体示例:
1. 访问eldSettings.rulesets数组
rulesets是嵌套在eldSettings对象里的数组,先通过driveArry[x].eldSettings.rulesets拿到数组,再循环遍历内部对象:
const driveArry = dataobj.data; let tag = ""; for (let x in driveArry) { // 保留原有的顶级name访问逻辑 tag += driveArry[x].name + "<br>"; // 遍历rulesets数组 const rulesets = driveArry[x].eldSettings.rulesets; for (let rule of rulesets) { tag += `规则周期:${rule.cycle}<br>`; tag += `班次类型:${rule.shift}<br>`; tag += `重启规则:${rule.restart}<br>`; tag += `休息要求:${rule.break}<br><br>`; } } console.log(tag);
2. 访问tags数组中的对象属性
tags是直接挂在顶级对象下的数组,循环遍历每个标签对象即可取出id、name等属性:
const driveArry = dataobj.data; let tag = ""; for (let x in driveArry) { tag += driveArry[x].name + "<br>"; // 遍历tags数组 const tags = driveArry[x].tags; tag += "标签列表:<br>"; for (let t of tags) { tag += `标签ID:${t.id},标签名称:${t.name},父标签ID:${t.parentTagId}<br>`; } tag += "<br>"; } console.log(tag);
合并完整示例
如果要同时访问两部分数据,可将逻辑整合到一个循环中:
const driveArry = dataobj.data; let tag = ""; for (let x in driveArry) { const driver = driveArry[x]; // 顶级属性 tag += `司机姓名:${driver.name},ID:${driver.id},电话:${driver.phone}<br>`; // Eld规则部分 const rulesets = driver.eldSettings.rulesets; tag += "Eld规则:<br>"; for (let rule of rulesets) { tag += ` - 周期:${rule.cycle},班次:${rule.shift}<br>`; } // 所属标签部分 const tags = driver.tags; tag += "所属标签:<br>"; for (let t of tags) { tag += ` - ${t.name}(ID:${t.id})<br>`; } tag += "<br><br>"; } console.log(tag);
注意事项
- 建议添加存在性判断(比如
driver.eldSettings?.rulesets),避免因数据缺失导致报错; - 遍历数组优先使用
for...of循环,比for...in更适配数组场景,不会遍历到数组原型上的额外属性。
内容的提问来源于stack exchange,提问作者TXjayhawk
相关产品推荐
相关产品推荐

