Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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_Vue.js - Fatal编程技术网

Javascript 有没有办法按索引顺序比较数组并显示差异?

Javascript 有没有办法按索引顺序比较数组并显示差异?,javascript,vue.js,Javascript,Vue.js,我有两个数组,希望按索引顺序比较它们的元素。当它们有不同的项时,它工作正常,并显示差异,但当它们有不同顺序的相同元素时,它不返回任何内容。。这是我的密码,请帮我 array1 = [a, b, c,] array2 = [a, x, c,] var diff = this.array1.filter(diff => !this.array2.includes(diff)); this.showDiff = diff.toString(); // prints : x 但在这种情况下

我有两个数组,希望按索引顺序比较它们的元素。当它们有不同的项时,它工作正常,并显示差异,但当它们有不同顺序的相同元素时,它不返回任何内容。。这是我的密码,请帮我

array1 = [a, b, c,]
array2 = [a, x, c,]

var diff = this.array1.filter(diff => !this.array2.includes(diff));
this.showDiff = diff.toString();   // prints : x
但在这种情况下进行比较时:

array1 = [a, b, c]
array2 = [c, b, a]
array1 = [a, b, c]
array2 = [c, a, b]
我需要得到这个结果:[a,c]

在这种情况下:

array1 = [a, b, c]
array2 = [c, b, a]
array1 = [a, b, c]
array2 = [c, a, b]
我需要得到这个结果:[a,b,c]


但在这两种情况下我什么都没有得到。比较时,订单对我很重要。

如果索引很重要,那么在检查其他数组时需要使用索引<代码>!array2.includes(diff)不会这样做

过滤器
回调接收索引,因此您可以在检查时使用它:

var diff = this.array1.filter((diff, index) => this.array2[index] !== diff);
实例:

功能测试(array1,array2){
var diff=array1.filter((diff,index)=>array2[index]!==diff);
log(`array1=${JSON.stringify(array1)}`);
log(`array2=${JSON.stringify(array2)}`);
log(`diff=${JSON.stringify(diff)}`);
}
试验(
[“a”、“b”、“c”],
[“c”、“b”、“a”]
);
试验(
[“a”、“b”、“c”],
[“c”、“a”、“b”]

);
不使用include,而是与同一索引处的值进行比较。重要的是,只有当
array1
具有相同的长度或小于
array2
时,这才有效。使用
array1.length>array2.length
,您将在
array2
中检查一个不存在的索引,并将引发一个错误。@VictorLiveira-不会引发任何错误(
array2[index]
index
=array2.length
导致
未定义的
),但这是一个很好的观点,你需要考虑数组长度,以确保结果的正确性。我如何也包括检查数组长度?@T.J.Crowder你是正确的。在我看来,当使用strict模式时,这将引发错误,而不是返回
undefined
。我的bad@MisaghKarimi-查看数组的
length
属性,并在
array1.length
array1.length>array2.length
时执行您希望此代码执行的任何操作。