[英]How to merge two objects with different structure in javascript
I Have two objects with different structure, trying to merge this two objects with matched data based on a key value, and make a new object with complete data from object1 and object2. 我有两个具有不同结构的对象,试图将这两个对象与基于键值的匹配数据合并,并使用来自object1和object2的完整数据创建一个新对象。
my Object1 我的对象1
{
"schedule":{
"onward":{
"journey":[
{
"trips":[
{
"origin":{
"airportCode":"AMS"
},
"destination":{
"airportCode":"BCN"
},
"FlightNumber":"KL1665"
}
]
},
{
"trips":[
{
"origin":{
"airportCode":"AMS"
},
"destination":{
"airportCode":"BCN"
},
"FlightNumber":"MF9343"
}
]
}
]
}
}
}
object 2 对象2
{
"flights":[
{
"flightNumber":"KL1665",
"price":223,
"available":10
},
{
"flightNumber":"KL112",
"price":223,
"available":10
},
{
"flightNumber":" KL112",
"price":223,
"available":10
}
]
}
i Would like to merge "price" and "available" to object which matches with "flightNumber" and create a new object with all data. 我想将“价格”和“可用”合并到与“ flightNumber”匹配的对象,并创建一个包含所有数据的新对象。
I have tried to use loadash and underscore but couldnt figure it. 我试图使用loadash和下划线,但无法弄清楚。 Help would be great, Thank in Advance.
提前谢谢您的帮助。
2 simple forEach
will do it:- 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]);
}
});
});
Working example: 工作示例:
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.