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
时执行您希望此代码执行的任何操作。