Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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_Arrays - Fatal编程技术网

Javascript 如何从另一个对象数组更新一个对象数组中不存在的值?

Javascript 如何从另一个对象数组更新一个对象数组中不存在的值?,javascript,arrays,Javascript,Arrays,我有两个包含大量数据的对象数组。 这两个数组的结构是这样的 arr1 = [ {x: 1, y: '2018-01-01'}, {x: 2, y: '2018-01-02'}, {x: 3, y: '2018-01-03'}, {x: 5, y: '2018-01-05'}, .... ] 我想更新arr2,使其使用仅在arr1中存在的值更新对象数组,并删除arr1中不存在的任何值。注意,我想更新原始arr2,而不是返回新数组 我尝试遍历单个数组并删除不

我有两个包含大量数据的对象数组。 这两个数组的结构是这样的

arr1 = [
  {x: 1, y: '2018-01-01'}, 
  {x: 2, y: '2018-01-02'},           
  {x: 3, y: '2018-01-03'},
  {x: 5, y: '2018-01-05'},
....
]
我想更新
arr2
,使其使用仅在arr1中存在的值更新对象数组,并删除arr1中不存在的任何值。注意,我想更新原始arr2,而不是返回新数组


我尝试遍历单个数组并删除不存在但运气不好的值。

您可以获得一个映射并从末尾进行迭代,以拼接未知项或更新更改的值

var arr1=[{x:1,y:'2018-01-01x'},{x:2,y:'2018-01-02'},{x:3,y:'2018-01-03'},{x:5,y:'2018-01-05'}],
arr2=[{x:1,y:2018-01-01'},{x:2,y:2018-01-02'},{x:3,y:2018-01-03'},{x:4,y:2018-01-04'},{x:5,y:2018-01-05'},{x:6,y:2018-01-08'}],
map=arr1.reduce((m,{x,y})=>m.set(x,y),新map),
i=2.5米长;
而(我--){
if(map.has(arr2[i].x)){
if(map.get(arr2[i].x)!==arr2[i].y){
arr2[i].y=map.get(arr2[i].x);
}
}否则{
arr2.拼接(i,1);
}
}
控制台日志(arr2)

。作为控制台包装{max height:100%!important;top:0;}
您可以获取一个映射并从末尾进行迭代,以拼接未知项或更新更改的值

var arr1=[{x:1,y:'2018-01-01x'},{x:2,y:'2018-01-02'},{x:3,y:'2018-01-03'},{x:5,y:'2018-01-05'}],
arr2=[{x:1,y:2018-01-01'},{x:2,y:2018-01-02'},{x:3,y:2018-01-03'},{x:4,y:2018-01-04'},{x:5,y:2018-01-05'},{x:6,y:2018-01-08'}],
map=arr1.reduce((m,{x,y})=>m.set(x,y),新map),
i=2.5米长;
而(我--){
if(map.has(arr2[i].x)){
if(map.get(arr2[i].x)!==arr2[i].y){
arr2[i].y=map.get(arr2[i].x);
}
}否则{
arr2.拼接(i,1);
}
}
控制台日志(arr2)


作为控制台包装{max height:100%!important;top:0;}
请添加您的尝试和想要的结果。两个数组的顺序是否相同?是否匹配x值并更新y值?请尝试此-
arr2.splice(0,arr2.length,…arr1)@NinaScholz,数组已排序,因此顺序应该不会有问题。@camaulay,不,x值变化很大,因此不应该与imo匹配。请添加您的尝试和所需的结果。两个数组的顺序是否相同?是否匹配x值并更新y值?请尝试此-
arr2.splice(0,arr2.length,…arr1)@NinaScholz,数组已排序,因此顺序应该不会有问题。@camaulay,不,x值变化很大,因此在我看来不应该匹配。有没有办法在reduce函数中使用空格分隔的键名
map=arr1.reduce((m,{“两个空格”,y})=>m.set(“两个空格”,y),newmap)
运行时抛出错误您需要另一个变量名:
map=arr1.reduce((m,{“两个空格”:key,y})=>m.set(key,y),newmap)
如果我要做的唯一检查是
y
列,而x列之间不需要匹配怎么办?结果应该是什么样的?(看起来是另一个问题。)差不多。我的意思是,返回arr2,其中列
y
匹配,但不依赖于列
x
是否有办法在reduce函数中使用空格分隔的键名
map=arr1.reduce((m,{“两个空格”,y})=>m.set(“两个空格”,y),newmap)
运行时抛出错误您需要另一个变量名:
map=arr1.reduce((m,{“两个空格”:key,y})=>m.set(key,y),newmap)
如果我要做的唯一检查是
y
列,而x列之间不需要匹配怎么办?结果应该是什么样的?(看起来是另一个问题。)差不多。我的意思是,返回arr2,其中列
y
匹配,但不依赖于列
x
arr2 = [
  {x: 1, y: '2018-01-01'}, 
  {x: 2, y: '2018-01-02'},           
  {x: 3, y: '2018-01-03'},
  {x: 4, y: '2018-01-04'},
  {x: 5, y: '2018-01-05'},
  {x: 6, y: '2018-01-08'}
]