javascript - 循环遍历对象中的嵌套数组
问题描述
我想遍历这个 json 文件,并attendantName
为每个商店打印。我能够打印键和值,并且能够打印服务员数组中的第一个服务员。但我需要打印数组中的所有服务员。我想我需要一个嵌套循环。我怎样才能做到这一点?这就是我到目前为止所拥有的。
脚本.js
var data;
var request = new XMLHttpRequest();
request.open('GET', 'js/tender-total-data.json');
request.onreadystatechange = function () {
if (request.status === 200 && request.readyState === 4) {
data = JSON.parse(request.responseText);
$.each(data.stores, function(key, val){
console.log("The key is: ", key, "The value is; ", val);
console.log("Attendant Name: ", (val.attendants[0].attendantName));
console.log(val.storeId);
})
}
};
request.send();
投标总数据.json
{
"stores": [
{
"storeName": "Master Bistro",
"storeId": "3046",
"attendants": [
{
"attendantName": "Janis Joplin",
"attendantId": "9784526",
"total": 2000,
"tenderTotal": {
"Cash": 500,
"TC": 0,
"UOD": 500,
"MC": 250,
"VI": 250,
"AX": 250,
"DI": 250,
"JC": 0,
"DC": 0,
"UOP": 0,
"GN": 0,
"UOGC": 0,
"HOTEL": 0,
"NCTNCG": 0
}
},
{
"attendantName": "David Bowie",
"attendantId": "2589456",
"total": 14675,
"tenderTotal": {
"Cash": 175,
"TC": 0,
"UOD": 100,
"MC": 9500,
"VI": 3500,
"AX": 550,
"DI": 850,
"JC": 0,
"DC": 0,
"UOP": 0,
"GN": 0,
"UOGC": 0,
"HOTEL": 0,
"NCTNCG": 0
}
},
{
"attendantName": "Michael Jackson",
"attendantId": "5478264",
"total": 15599,
"tenderTotal": {
"Cash": 250,
"TC": 0,
"UOD": 80,
"MC": 5624,
"VI": 6895,
"AX": 2500,
"DI": 250,
"JC": 0,
"DC": 0,
"UOP": 0,
"GN": 0,
"UOGC": 0,
"HOTEL": 0,
"NCTNCG": 0
}
}
],
"message": "Store totals for 08/20/2018"
},{
"storeName": "The Master Marketplace",
"storeId": "3047",
"attendants": [
{
"attendantName": "Dirk Novitski",
"attendantId": "9784527",
"total": 2000,
"tenderTotal": {
"Cash": 500,
"TC": 0,
"UOD": 500,
"MC": 250,
"VI": 250,
"AX": 250,
"DI": 250,
"JC": 0,
"DC": 0,
"UOP": 0,
"GN": 0,
"UOGC": 0,
"HOTEL": 0,
"NCTNCG": 0
}
},
{
"attendantName": "Carmello Anthony",
"attendantId": "2589458",
"total": 14675,
"tenderTotal": {
"Cash": 175,
"TC": 0,
"UOD": 100,
"MC": 9500,
"VI": 3500,
"AX": 550,
"DI": 850,
"JC": 0,
"DC": 0,
"UOP": 0,
"GN": 0,
"UOGC": 0,
"HOTEL": 0,
"NCTNCG": 0
}
},
{
"attendantName": "Stevie Wonder",
"attendantId": "5478266",
"total": 15599,
"tenderTotal": {
"Cash": 250,
"TC": 0,
"UOD": 80,
"MC": 5624,
"VI": 6895,
"AX": 2500,
"DI": 250,
"JC": 0,
"DC": 0,
"UOP": 0,
"GN": 0,
"UOGC": 0,
"HOTEL": 0,
"NCTNCG": 0
}
}
],
"message": "Store totals for 08/22/2018"
}
]
}
谢谢我感谢你的帮助。
解决方案
你是对的,你需要另一个循环,但你可以让它更容易一点.forEach
:
var data;
var request = new XMLHttpRequest();
request.open('GET', 'js/tender-total-data.json');
request.onreadystatechange = function () {
if (request.status === 200 && request.readyState === 4) {
data = JSON.parse(request.responseText);
data.stores.forEach(function(key, val){
console.log("The key is: ", key, "The value is; ", val);
val.attendants.forEach(a => console.log("Attendant Name: ",a.attendantName));
console.log(val.storeId);
})
}
};
request.send();
推荐阅读
- javascript - javascript 返回包含特定数组项的随机数据
- python-3.x - 查找列表中的哪些时间戳位于数据框中的日期范围之间
- wordpress - Wordpress:在取消记录后返回历史记录时,它会显示桌面
- python - 模型作为另一个模型 Django 的字段
- javascript - 在 ChartJS 中创建动态饼图的问题
- angular - 使用未定义副作用的 Angular trackby 函数
- scheme - 我的功能不起作用。我收到此错误:define: expected only one expression for the function body, but found 1 extra part
- spring-boot - 针对不同消费者的每条消息的 Spring Cloud Stream 主题(在一个消费者应用程序中)
- delphi - Delphi Firemonkey Programmatic Data File Export to Excel -- 单位和方法在哪里?
- java - 使用 docker 和 spring 云的奇怪 SSL 错误