Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中合并两个不同结构的对象_Javascript_Jquery_Arrays_Json_Javascript Objects - Fatal编程技术网

如何在javascript中合并两个不同结构的对象

如何在javascript中合并两个不同结构的对象,javascript,jquery,arrays,json,javascript-objects,Javascript,Jquery,Arrays,Json,Javascript Objects,我有两个结构不同的对象,尝试根据键值将这两个对象与匹配的数据合并,并使用object1和object2的完整数据创建一个新对象 我的反对意见1 { "schedule":{ "onward":{ "journey":[ { "trips":[ { "origin":{

我有两个结构不同的对象,尝试根据键值将这两个对象与匹配的数据合并,并使用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
      }
   ]
}
我想将“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相同结构的最终物体