Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.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 在不使用lodash的情况下合并具有条件的两个数组_Javascript_Arrays - Fatal编程技术网

Javascript 在不使用lodash的情况下合并具有条件的两个数组

Javascript 在不使用lodash的情况下合并具有条件的两个数组,javascript,arrays,Javascript,Arrays,我面临合并两个数组的问题。我有两个对象数组,第一个是prev,有旧值,另一个是更新值。我想让结果数组包含prev数组的所有对象,更新后的值在array next中,并且让对象在next数组中 例如: var prev = [{id: 1, val: 'abc'}, {id: 2, val: 'pqr'}]; var next = [{id: 1, val: 'nextVal'}, {id: 3, val: 'xyz'}]; 期望 mergeOutput = [ {id: 1, val: '

我面临合并两个数组的问题。我有两个对象数组,第一个是prev,有旧值,另一个是更新值。我想让结果数组包含prev数组的所有对象,更新后的值在array next中,并且让对象在next数组中

例如:

var prev = [{id: 1, val: 'abc'}, {id: 2, val: 'pqr'}];
var next = [{id: 1, val: 'nextVal'}, {id: 3, val: 'xyz'}];
期望

mergeOutput = [
  {id: 1, val: 'nextVal'}, // value is updated 
  {id: 2, val: 'pqr'}, 
  {id: 3, val: 'xyz'}
]
注意:数组顺序无关紧要。

您可以使用
Map()
合并数组

var-prev=[{id:1,val:'abc'},{id:2,val:'pqr'}];
var next=[{id:1,val:'nextVal'},{id:3,val:'xyz'}];
var hash=newmap();
上一个concat(下一个).forEach(函数(obj){
set(obj.id,Object.assign(hash.get(obj.id)|{},obj))
});
var mergedArray=Array.from(hash.values());
console.log(mergedArray)您可以使用
Map()
合并数组

var-prev=[{id:1,val:'abc'},{id:2,val:'pqr'}];
var next=[{id:1,val:'nextVal'},{id:3,val:'xyz'}];
var hash=newmap();
上一个concat(下一个).forEach(函数(obj){
set(obj.id,Object.assign(hash.get(obj.id)|{},obj))
});
var mergedArray=Array.from(hash.values());
console.log(mergedArray)