簡體   English   中英

如何在JavaScript中合並具有不同結構的兩個對象

[英]How to merge two objects with different structure in javascript

我有兩個具有不同結構的對象,試圖將這兩個對象與基於鍵值的匹配數據合並,並使用來自object1和object2的完整數據創建一個新對象。

我的對象1

{  
   "schedule":{  
      "onward":{  
         "journey":[  
            {  
               "trips":[  
                  {  
                     "origin":{  
                        "airportCode":"AMS"
                     },
                     "destination":{  
                        "airportCode":"BCN"
                     },
                     "FlightNumber":"KL1665"
                  }
               ]
            },
            {  
               "trips":[  
                  {  
                     "origin":{  
                        "airportCode":"AMS"
                     },
                     "destination":{  
                        "airportCode":"BCN"
                     },
                     "FlightNumber":"MF9343"
                  }
               ]
            }
         ]
      }
   }
}

對象2

{  
   "flights":[  
      {  
         "flightNumber":"KL1665",
         "price":223,
         "available":10
      },
      {  
         "flightNumber":"KL112",
         "price":223,
         "available":10
      },
      {  
         "flightNumber":" KL112",
         "price":223,
         "available":10
      }
   ]
}

我想將“價格”和“可用”合並到與“ flightNumber”匹配的對象,並創建一個包含所有數據的新對象。

我試圖使用loadash和下划線,但無法弄清楚。 提前謝謝您的幫助。

2個簡單的forEach可以做到:

flights.flights.forEach(function(e, i) {
  schedule.schedule.onward.journey.forEach(function(e2, i2) {
    if (e.flightNumber == e2.trips[0].FlightNumber) {
      e2.trips[0] = $.extend(e, e2.trips[0]);
    }
  });
});

工作示例:

 var schedule = { "schedule": { "onward": { "journey": [{ "trips": [{ "origin": { "airportCode": "AMS" }, "destination": { "airportCode": "BCN" }, "FlightNumber": "KL1665" }] }, { "trips": [{ "origin": { "airportCode": "AMS" }, "destination": { "airportCode": "BCN" }, "FlightNumber": "MF9343" }] }] } } }; var flights = { "flights": [{ "flightNumber": "KL1665", "price": 223, "available": 10 }, { "flightNumber": "KL112", "price": 223, "available": 10 }, { "flightNumber": " KL112", "price": 223, "available": 10 } ] }; flights.flights.forEach(function(e, i) { schedule.schedule.onward.journey.forEach(function(e2, i2) { if (e.flightNumber == e2.trips[0].FlightNumber) { e2.trips[0] = $.extend(e, e2.trips[0]); } }); }); console.log(schedule); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM