如何知道两个数组是否具有相同的值

2022-08-30 02:21:31

我有这两个数组:一个数组填充来自ajax请求的信息,另一个存储用户单击的按钮。我使用这个代码(我用样本编号填充):

var array1 = [2, 4];
var array2 = [4, 2]; //It cames from the user button clicks, so it might be disordered.
array1.sort(); //Sorts both Ajax and user info.
array2.sort();
if (array1==array2) {
    doSomething();
}else{
    doAnotherThing();
}

但它总是给出,即使两个数组相同,但名称不同。(我在Chrome的JS控制台中检查了这一点)。那么,有没有办法知道这两个数组是否包含相同的数组?为什么是给予?我如何知道第一个数组中的哪些值不在第二个数组中?falsefalse


答案 1

如果您的数组项不是对象 - 例如,如果它们是数字或字符串,则可以比较它们的连接字符串以查看它们是否具有任何顺序的相同成员 -

var array1= [10, 6, 19, 16, 14, 15, 2, 9, 5, 3, 4, 13, 8, 7, 1, 12, 18, 11, 20, 17];
var array2= [12, 18, 20, 11, 19, 14, 6, 7, 8, 16, 9, 3, 1, 13, 5, 4, 15, 10, 2, 17];

if(array1.sort().join(',')=== array2.sort().join(',')){
    alert('same members');
}
else alert('not a match');

答案 2

如果只想检查两个数组是否具有相同的值(无论每个值的出现次数和顺序如何),则可以使用 lodash 执行此操作

_.isEmpty(_.xor(array1, array2))

短小精悍!