首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何知道两个数组是否具有相同的值

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

Stack Overflow用户
提问于 2011-06-03 23:32:40
回答 28查看 223.8K关注 0票数 148

我有两个数组:一个填充来自ajax请求的信息,另一个存储用户单击的按钮。我使用以下代码(我填充了示例数字):

代码语言:javascript
复制
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?如何知道第一个数组中的哪些值不在第二个数组中?

EN

回答 28

Stack Overflow用户

回答已采纳

发布于 2017-04-19 01:17:20

对数组进行排序,并逐个比较它们的值。

代码语言:javascript
复制
function arrayCompare(_arr1, _arr2) {
    if (
      !Array.isArray(_arr1)
      || !Array.isArray(_arr2)
      || _arr1.length !== _arr2.length
      ) {
        return false;
      }
    
    // .concat() to not mutate arguments
    const arr1 = _arr1.concat().sort();
    const arr2 = _arr2.concat().sort();
    
    for (let i = 0; i < arr1.length; i++) {
        if (arr1[i] !== arr2[i]) {
            return false;
         }
    }
    
    return true;
}
票数 52
EN

Stack Overflow用户

发布于 2011-06-04 01:06:55

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

代码语言:javascript
复制
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');
票数 122
EN

Stack Overflow用户

发布于 2015-01-07 18:25:32

如果只想检查两个数组是否具有相同的值(不管出现的次数和每个值的顺序),可以使用lodash

代码语言:javascript
复制
_.isEmpty(_.xor(array1, array2))

简短,简单,漂亮!

票数 58
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6229197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档