많은 중첩 배열과 객체가있는 배열이 있습니다. 내 코드가 작동하지 않으며 반복해서 살펴본 후 이유를 이해할 수 없습니다. 그게 내 말이 무슨 뜻인지 설명하기가 어렵다. (내 제목 질문도 분명하지 않지만 미안하다. 내 코드에서 무엇이 잘못되었는지 모른다면 내 말의 의미를 설명 할 수 없었다.) 그래서 나는 2 질문은 내 코드를 주석으로 통찰 함 - 이해할 수 있기를 바랍니다! 어떤 아이디어에 대해서도 고마워.Javascript - 배열과 객체가있는 중첩 배열을 반복하는 방법과 내 코드가 작동하지 않는 이유는 무엇입니까?
var trips= [{
"Air": {
"OriginDestinationOptions": {
"OriginDestinationOption": [{
"Flight": [{
"DepartureAirport": {
"LocationCode": "JFK"
},
"ArrivalAirport": {
"LocationCode": "SVO"
},
"MarketingAirline": {
"Code": "SU"
}
}, {
"DepartureAirport": {
"LocationCode": "SVO"
},
"ArrivalAirport": {
"LocationCode": "TXL"
},
"MarketingAirline": {
"Code": "SU"
}
},
{
"DepartureAirport": {
"LocationCode": "TXL"
},
"ArrivalAirport": {
"LocationCode": "LHR"
},
"MarketingAirline": {
"Code": "SU"
}
}],
"ElapsedTime": 915
}, {
"Flight": [{
"DepartureAirport": {
"LocationCode": "LHR"
},
"ArrivalAirport": {
"LocationCode": "LAX"
},
"MarketingAirline": {
"Code": "SU"
}
}, {
"DepartureAirport": {
"LocationCode": "LAX"
},
"ArrivalAirport": {
"LocationCode": "TXL"
},
"MarketingAirline": {
"Code": "SU"
}
},
{
"DepartureAirport": {
"LocationCode": "TXL"
},
"ArrivalAirport": {
"LocationCode": "LHR"
},
"MarketingAirline": {
"Code": "SU"
}
}],
"ElapsedTime": 1425
}]
},
"DirectionInd": "Return"
}
},
{
"Air": {
"OriginDestinationOptions": {
"OriginDestinationOption": [{
"Flight": [{
"DepartureAirport": {
"LocationCode": "JFK"
},
"ArrivalAirport": {
"LocationCode": "SVO"
},
"MarketingAirline": {
"Code": "SU"
}
}, {
"DepartureAirport": {
"LocationCode": "SVO"
},
"ArrivalAirport": {
"LocationCode": "LHR"
},
"MarketingAirline": {
"Code": "SU"
}
}],
"ElapsedTime": 915
}, {
"Flight": [{
"DepartureAirport": {
"LocationCode": "LHR"
},
"ArrivalAirport": {
"LocationCode": "SVO"
},
"MarketingAirline": {
"Code": "SU"
}
}, {
"DepartureAirport": {
"LocationCode": "SVO"
},
"ArrivalAirport": {
"LocationCode": "JFK"
},
"MarketingAirline": {
"Code": "SU"
}
}],
"ElapsedTime": 1125
}]
},
"DirectionInd": "Return"
}
}];
내 코드 :
var flightObjects = [];
function getAirportNameToLocation(obj) {
var allTrips = [];
for (var i = 0; i < obj.length; i++) {
allTrips.push(obj[i].Air.OriginDestinationOptions.OriginDestinationOption)
}
for (var i = 0; i < allTrips.length; i++) {
var toDestinationFlightsTemp = [];
var returnFlightsTemp = [];
//first FlightsSegment object --> to destination flights
var flightsToLoc = allTrips[i][0];
//second FlightsSegment object --> return flights
var returnFlights = allTrips[i][1];
console.log(toDestinationFlightsTemp)
1) 나는 toDestinationFlights'가-I는 빈 상태 (empty)의 배열이 '로그 콘솔, 그러나 나는 또한 누르면 아래 2 개 라인 (같은 내가 전에 로그 콘솔로) toDestinationFight를 내 flightObjects 객체에 보내고 그 객체를 반환합니다. 실제로 Im은 빈 배열을 반환하지 않지만 값은 반환합니다. 나는 이유를 모른다. 어떻게 든 임 빈을 얻기 때문에 다시 toDestinationFlightsTemp의 값과 returnFlightsTemp에서 첫 번째 값이 나던 일을 할 - toDestinationFlightsTemp.concat (returnFlights [0]) : toDestinationFlights : 여기에 의도 무엇
console.log("test", toDestinationFlightsTemp)
flightObjects.push({
2) 배열
toDestinationFlights: toDestinationFlightsTemp, //This for whatever reason works fine
returnFlights: returnFlightsTemp
})
flightsToLoc.Flight.forEach(function(flightTo, i) {
toDestinationFlightsTemp.push(flightTo.DepartureAirport.LocationCode);
})
returnFlights.Flight.forEach(function(flightTo, i) {
returnFlightsTemp.push(flightTo.DepartureAirport.LocationCode)
})
}
toDestinationFlightsARIVALTemp = toDestinationFlightsTemp.concat(returnFlightsTemp[0]);
}
getAirportNameToLocation(trips)
flightObjects;
이 코드가 실행 가능한 확인과 의견에 메모를 변환, 그것이 머리 안쪽에있는 그런 양의 코드를 디버그하는 것은 꽤 어렵습니다. – Flying
그럼 정확히 어떤 데이터를 데이터로부터 추출하려고합니까? 'getAirportNameToLocation'은 'DepartureAirport-> LocationCode'를 가진 배열을 원한다는 것을 알려줍니까? –
필자의 코드를 테스트했는데 두 경우 모두 콘솔 로그에 빈 배열이있다. 위의 4 줄마다 공백으로 명시 적으로 만들었 기 때문에 놀라지 않을 것이다. – leaf