![](/img/trans.png)
[英]How do I iterate through nested properties of an json object and create a new array list?
[英]How do I iterate through an json object that has nested objects to get the data I need
我有一個json
對象,我需要從其中的嵌套對象中獲取兩條數據。
這是json
對象
{ "versionRoomPoolList": [{ "roomPoolDisplayId": 1, "roomPoolStatus": "NOCHANGE", "roomPoolCode": "GENR", "miosSRC": "YA", "sna": "N", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 2, "currentMaxOccupancy": 2, "capacityStatus": "NOCHANGE", "newCapacity": 0, "currentCapacity": 0, "excludeAlways": false, "excludeOverAuth": false, "propertySellOnly": false, "versionRoomTypeList": [{ "roomTypeDisplayOrderId": 1, "roomTypeId": 1, "roomTypeStatus": "NOCHANGE", "roomPool": "GENR", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 2, "currentMaxOccupancy": 2, "capacityStatus": "NOCHANGE", "newCapacity": 0, "currentCapacity": 0, "guaranteed": 0, "minAvailability": null, "premium": false, "eliteAvailability": false, "pmsRoomType": null, "isROH": false, "versionRoomTypeAttributeList": [{ "attributeDisplayId": 1, "attributeStatus": "NOCHANGE", "attributeCode": "GU", "attributeDescription": "Guest Room" }] }] }, { "roomPoolDisplayId": 2, "roomPoolStatus": "NOCHANGE", "roomPoolCode": "DLUX", "miosSRC": "YB", "sna": "N", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 2, "currentMaxOccupancy": 2, "capacityStatus": "NOCHANGE", "newCapacity": 238, "currentCapacity": 238, "excludeAlways": false, "excludeOverAuth": false, "propertySellOnly": false, "versionRoomTypeList": [{ "roomTypeDisplayOrderId": 2, "roomTypeId": 20, "roomTypeStatus": "NOCHANGE", "roomPool": "DLUX", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 3, "currentMaxOccupancy": 3, "capacityStatus": "NOCHANGE", "newCapacity": 6, "currentCapacity": 6, "guaranteed": 4, "minAvailability": 1, "premium": false, "eliteAvailability": false, "pmsRoomType": null, "isROH": false, "versionRoomTypeAttributeList": [{ "attributeDisplayId": 1, "attributeStatus": "NOCHANGE", "attributeCode": "GU", "attributeDescription": "Guest Room" }, { "attributeDisplayId": 4, "attributeStatus": "NOCHANGE", "attributeCode": "HF", "attributeDescription": "High Floor, 11th floor and above" }, { "attributeDisplayId": 3, "attributeStatus": "NOCHANGE", "attributeCode": "KN", "attributeDescription": "1 King Bed" }, { "attributeDisplayId": 2, "attributeStatus": "NOCHANGE", "attributeCode": "SB", "attributeDescription": "Sofabed" }, { "attributeDisplayId": 5, "attributeStatus": "NOCHANGE", "attributeCode": "SE", "attributeDescription": "Separate Shower and Bathtub" } ] }] } ] }
我試圖獲取兩條數據並將其放入數據網格中的列中。 第一個值來自鍵versionRoomPoolList.roomPoolCode
和versionRoomPoolList.versionRoomTypeList.versionRoomTypeAttributeList.attributeCode
我正在嘗試使用for loops
來做到這一點for loops
這是我迄今為止所擁有的:
var v2 = versionRoomPools; roomPool, roomTypes, roomType, i, k = [], j; for (i = 0; (roomPool = v2.versionRoomPoolList[i]); i++) { k.push(roomPool); roomTypes = roomPool.versionRoomTypeList; for (j = 0; (roomType = roomTypes[j]); j++) { k.push(roomType); } }
我被困在如何遍歷嵌套對象上。
您應該像這樣訪問您的對象。
console.log(data.versionRoomPoolList[0].roomPoolCode); // roomPoolCode
data.versionRoomPoolList[0].versionRoomTypeList[0].versionRoomTypeAttributeList.forEach(v => {
console.log(v)
})
我們還可以遍歷所有鍵,如果它是嵌套對象,則調用該函數。
function search(o) {
Object.keys(o).forEach(function (k) {
console.log('Searched', o, o[k]);
if (o[k] !== null && typeof o[k] === 'object') {
search(o[k]);
return;
}
console.log(o[k] === o['roomPoolCode']); // Logic
if (o[k] === o['roomPoolCode'] {
// Do whatever with it
}
return o[k];
});
}
let data = { "versionRoomPoolList": [{ "roomPoolDisplayId": 1, "roomPoolStatus": "NOCHANGE", "roomPoolCode": "GENR", "miosSRC": "YA", "sna": "N", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 2, "currentMaxOccupancy": 2, "capacityStatus": "NOCHANGE", "newCapacity": 0, "currentCapacity": 0, "excludeAlways": false, "excludeOverAuth": false, "propertySellOnly": false, "versionRoomTypeList": [{ "roomTypeDisplayOrderId": 1, "roomTypeId": 1, "roomTypeStatus": "NOCHANGE", "roomPool": "GENR", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 2, "currentMaxOccupancy": 2, "capacityStatus": "NOCHANGE", "newCapacity": 0, "currentCapacity": 0, "guaranteed": 0, "minAvailability": null, "premium": false, "eliteAvailability": false, "pmsRoomType": null, "isROH": false, "versionRoomTypeAttributeList": [{ "attributeDisplayId": 1, "attributeStatus": "NOCHANGE", "attributeCode": "GU", "attributeDescription": "Guest Room" }] }] }, { "roomPoolDisplayId": 2, "roomPoolStatus": "NOCHANGE", "roomPoolCode": "DLUX", "miosSRC": "YB", "sna": "N", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 2, "currentMaxOccupancy": 2, "capacityStatus": "NOCHANGE", "newCapacity": 238, "currentCapacity": 238, "excludeAlways": false, "excludeOverAuth": false, "propertySellOnly": false, "versionRoomTypeList": [{ "roomTypeDisplayOrderId": 2, "roomTypeId": 20, "roomTypeStatus": "NOCHANGE", "roomPool": "DLUX", "maxOccupancyStatus": "NOCHANGE", "newMaxOccupancy": 3, "currentMaxOccupancy": 3, "capacityStatus": "NOCHANGE", "newCapacity": 6, "currentCapacity": 6, "guaranteed": 4, "minAvailability": 1, "premium": false, "eliteAvailability": false, "pmsRoomType": null, "isROH": false, "versionRoomTypeAttributeList": [{ "attributeDisplayId": 1, "attributeStatus": "NOCHANGE", "attributeCode": "GU", "attributeDescription": "Guest Room" }, { "attributeDisplayId": 4, "attributeStatus": "NOCHANGE", "attributeCode": "HF", "attributeDescription": "High Floor, 11th floor and above" }, { "attributeDisplayId": 3, "attributeStatus": "NOCHANGE", "attributeCode": "KN", "attributeDescription": "1 King Bed" }, { "attributeDisplayId": 2, "attributeStatus": "NOCHANGE", "attributeCode": "SB", "attributeDescription": "Sofabed" }, { "attributeDisplayId": 5, "attributeStatus": "NOCHANGE", "attributeCode": "SE", "attributeDescription": "Separate Shower and Bathtub" } ] }] } ] } function search(o,) { Object.keys(o).forEach(function (k) { console.log('Searched', o, o[k]); if (o[k] !== null && typeof o[k] === 'object') { search(o[k]); return; } console.log(o[k] === o['roomPoolCode']); // o Something return o[k]; }); } search(data);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.