私は多くのネストされた配列とオブジェクトを持つ配列を持っています。私のコードはうまくいかず、何度も何度も見てから、私は理由を理解しません。私のタイトルの質問があまり明確ではない場合は申し訳ありませんが、私のコードで何が間違っているかわからない場合は、どういう意味を説明するのか分からなかったので、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は空の配列を取得する」ログ・コンソールが、私もまた、押したときに、以下の2行(同じ私は前にログコンソールとして) toDestinationFlightを私のflightObjectsオブジェクトに返し、そのオブジェクトを返します。Im実際に空の配列を返さず、値を返します。どうしてか分かりません。
ここで意図していた何 console.log("test", toDestinationFlightsTemp)
flightObjects.push({
2):toDestinationFlights:toDestinationFlightsTemp.concat(returnFlights [0]) - 再び、何とかImが空を取得しているので、私はこのdoesntの仕事toDestinationFlightsTempからの値とreturnFlightsTempからの最初の値が欲しいです配列
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