如何判断两个数组是否具有相同的值

187

我有两个数组:一个用于存储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();
}

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


1
我非常确定您需要遍历数组的每个元素。 - Thomas Li
你知道为什么它返回false吗?好奇。 - RobW
请查看 @Andrew 的答案 https://dev59.com/om025IYBdhLWcg3wFxqa#6229263 - Carlos Precioso
可能是重复的问题:如何检查 JavaScript 数组是否相等? - Palec
32个回答

-1
如果您想比较两个数组并检查是否有任何对象在两个数组中相同,它将起作用。 例如:
Array1 = [a,b,c,d] Array2 = [d,e,f,g]
在这里,“d”在两个数组中都是共同的,因此此函数将返回true值。
  cehckArray(array1, array2) {
    for (let i = 0; i < array1.length; i++) {
      for (let j = 0; j < array2.length; j++) {
        if (array1[i] === array2[j]) {
          return true;
        }
      }
    }
    // Return if no common element exist 
    return false;
  }

-2

以下是我的解决方案,不需要排序:

function isDifferent(t1,t2)
{
    return ((t1.length !== t2.length) || t1.some(tag1 => !t2.some(t=>t===tag1)));
}

let a1=['t','','b','xx','i','p','i'];
let a2=['','o','xx','b','t','p','i'];

console.log("DIFFERENT=",isDifferent(a1,a2)); //false

a1=['a','c','d'];
a2=['a','c'];

console.log("DIFFERENT=",isDifferent(a1,a2)); //true

a1=['a','c','d'];
a2=['a','c','c'];

console.log("DIFFERENT=",isDifferent(a1,a2)); //true

a1=['a','b','c'];
a2=['c','b','a'];

console.log("DIFFERENT=",isDifferent(a1,a2)); //false


这个不起作用,例如如果a1 = ['a','a','b']和a2 = ['a','b','c']。 - RobPethi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接