如何在javascript中合并两个不同结构的对象
我有两个结构不同的对象,尝试根据键值将这两个对象与匹配的数据合并,并使用object1和object2的完整数据创建一个新对象 我的反对意见1如何在javascript中合并两个不同结构的对象,javascript,jquery,arrays,json,javascript-objects,Javascript,Jquery,Arrays,Json,Javascript Objects,我有两个结构不同的对象,尝试根据键值将这两个对象与匹配的数据合并,并使用object1和object2的完整数据创建一个新对象 我的反对意见1 { "schedule":{ "onward":{ "journey":[ { "trips":[ { "origin":{
{
"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
}
]
}
我想将“price”和“available”合并到与“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计划={
“附表”:{
“向前”:{
“旅程”:[{
“旅行”:[{
“起源”:{
“机场代码”:“AMS”
},
“目的地”:{
“机场代码”:“BCN”
},
“航班号”:“KL1665”
}]
}, {
“旅行”:[{
“起源”:{
“机场代码”:“AMS”
},
“目的地”:{
“机场代码”:“BCN”
},
“航班号”:“MF9343”
}]
}]
}
}
};
var航班={
“航班”:[{
“航班号”:“KL1665”,
“价格”:223,
“可用”:10
}, {
“航班号”:“KL112”,
“价格”:223,
“可用”:10
}, {
“航班号”:“KL112”,
“价格”:223,
“可用”:10
}
]
};
flights.flights.forEach(函数(e,i){
日程表。日程表。前进。旅程。forEach(功能(e2,i2){
如果(e.flightNumber==e2.trips[0].flightNumber){
e2.trips[0]=$.extend(e,e2.trips[0]);
}
});
});
控制台日志(时间表)代码>
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计划={
“附表”:{
“向前”:{
“旅程”:[{
“旅行”:[{
“起源”:{
“机场代码”:“AMS”
},
“目的地”:{
“机场代码”:“BCN”
},
“航班号”:“KL1665”
}]
}, {
“旅行”:[{
“起源”:{
“机场代码”:“AMS”
},
“目的地”:{
“机场代码”:“BCN”
},
“航班号”:“MF9343”
}]
}]
}
}
};
var航班={
“航班”:[{
“航班号”:“KL1665”,
“价格”:223,
“可用”:10
}, {
“航班号”:“KL112”,
“价格”:223,
“可用”:10
}, {
“航班号”:“KL112”,
“价格”:223,
“可用”:10
}
]
};
flights.flights.forEach(函数(e,i){
日程表。日程表。前进。旅程。forEach(功能(e2,i2){
如果(e.flightNumber==e2.trips[0].flightNumber){
e2.trips[0]=$.extend(e,e2.trips[0]);
}
});
});
控制台日志(时间表)代码>
最终预期目标{“时间表”:{“前进时间表”:{“行程”:[{“航班”:[{“始发地”:{“机场代码”:“AMS”},“目的地”:{“机场代码”:“BCN”},“市场航班号”:“KL1665”,“价格”:223,“可用”:10}}},{“航班”:[{“始发地”:{“机场代码”:“AMS},“目的地”:{“机场代码”:“BCN”},“marketingFlightNumber”:“MF9343”}]}]}}
您只需手动执行即可。将所需航班的数据放入计划中。对于这种特定的东西没有“捷径”。@bryan60我是从Ajax动态获取这些数据的,因此不可能手动更新。我的意思是,您需要编写代码来手动将这些数据与循环结合起来。像这样的东西没有lodash或下划线之类的插件解决方案。最终预期对象<代码>{“时间表”:{“前进时间表”:{“行程”:{“航班”:{“始发地”:{“机场代码”:“AMS”},“目的地”:{“机场代码”:“BCN”},“市场航班号”:“KL1665”,“价格”:223,“可用”:10},{“航班”:{“始发地”::{“airportCode”:“AMS”},“destination”:{“airportCode”:“BCN”},“marketingFlightNumber”:“MF9343”}]}}}}}
您只需手动执行即可。将所需航班的数据放入计划中。对于这种特定的东西没有“捷径”。@bryan60我是从Ajax动态获取这些数据的,因此不可能手动更新。我的意思是,您需要编写代码来手动将这些数据与循环结合起来。对于这样的东西,没有lodash或下划线之类的插件解决方案。非常感谢您的回复,您能否建议一种方法,让我可以获得与object 1相同结构的最终对象非常感谢您的回复,你能不能建议一种方法,让我可以得到物体1相同结构的最终物体