![](/img/trans.png)
[英]How can I concat two objects with different structure in 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.