Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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比较2个数组以查找缺少的信息_Javascript_Arrays_Ecmascript 6_Lodash - Fatal编程技术网

Javascript 使用LODASH比较2个数组以查找缺少的信息

Javascript 使用LODASH比较2个数组以查找缺少的信息,javascript,arrays,ecmascript-6,lodash,Javascript,Arrays,Ecmascript 6,Lodash,我有2个API请求,返回2个数组(每个API请求的结果是1个数组),其中有1个公共值,即时间戳 我希望比较这两个数组,并使用LODASH查找其中缺少哪些数组项(在两个不同的数组中获得差异) 对于eg,这里有两组数组 array1 = [ [ 1564482000000, 30.5 ], [ 1564482300000, null ], [ 1564482000020, 30.5

我有2个API请求,返回2个数组(每个API请求的结果是1个数组),其中有1个公共值,即时间戳

我希望比较这两个数组,并使用LODASH查找其中缺少哪些数组项(在两个不同的数组中获得差异)

对于eg,这里有两组数组

array1 =  [
    [
      1564482000000,
      30.5
    ],
    [
      1564482300000,
      null
    ],
    [
      1564482000020,
      30.5
    ]
]


array2 =  [
    [
      1564482000000,
      30.5
    ],
    [
      1564482300000,
      null
    ],
    [
      1564482000010,
      10.5
    ]
]
在上述情况下,数组1具有数组2没有的以下值

[ 1564482000020, 30.5 ]

类似地,数组2具有数组1没有的以下值

[ 1564482000010, 10.5 ]

预期结果 我希望得到两个不同数组中缺少值的结果,所以

diff_array2 =     [
      1564482000020,
      30.5
    ]

diff_array1=     [
      1564482000010,
      10.5
    ]
我在Lodash中尝试了
XORBY
,它给出了combine值,因此无法找出数组1或数组2中缺少哪个项,因为XOR的结果数组是1数组。项目可能存在,也可能不存在

代码样本此处

不含lodash

我假设示例中两个不匹配数组的索引只是巧合。下面的代码将要做的是,从我们的数组中筛选所有数组,如果我们在另一个数组中找不到数组,那么这两个数组的索引0和索引1都是相等的。如果数组可以包含长度大于2的数组,则可以只迭代元素

var array1=[[15644482000000,30.5],[156482300000,null],[15644482000020,30.5],
array2=[15644482000000,30.5],[156482300000,null],[156444820000010,10.5];
功能差异arr(arr1、arr2){
返回arr1.filter(a=>!arr2.find(v=>v[0]==a[0]&&v[1]==v[1]))
}
控制台日志(差分arr(array1,array2))
console.log(diff_arr(array2,array1))
在没有lodash的情况下解决

我假设示例中两个不匹配数组的索引只是巧合。下面的代码将要做的是,从我们的数组中筛选所有数组,如果我们在另一个数组中找不到数组,那么这两个数组的索引0和索引1都是相等的。如果数组可以包含长度大于2的数组,则可以只迭代元素

var array1=[[15644482000000,30.5],[156482300000,null],[15644482000020,30.5],
array2=[15644482000000,30.5],[156482300000,null],[156444820000010,10.5];
功能差异arr(arr1、arr2){
返回arr1.filter(a=>!arr2.find(v=>v[0]==a[0]&&v[1]==v[1]))
}
控制台日志(差分arr(array1,array2))
log(diff_arr(array2,array1))
您可以使用传递项的索引作为迭代对象进行比较:

const diff_array2 = _.differenceBy(array1, array2, 0);    

const diff_array1 = _.differenceBy(array2, array1, 0);
您可以将要用于比较的项的索引作为迭代对象传递:

const diff_array2 = _.differenceBy(array1, array2, 0);    

const diff_array1 = _.differenceBy(array2, array1, 0);