开发者社区> 问答> 正文

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

我有两个数组:一个数组填充了来自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?我怎么知道第一个数组中的哪个值不在第二个数组中?

问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-08 12:32:33 467 0
1 条回答
写回答
取消 提交回答
  • function arraysEqual(_arr1, _arr2) {

    if (!Array.isArray(_arr1) || ! Array.isArray(_arr2) || _arr1.length !== _arr2.length)
      return false;
    
    var arr1 = _arr1.concat().sort();
    var arr2 = _arr2.concat().sort();
    
    for (var i = 0; i < arr1.length; i++) {
    
        if (arr1[i] !== arr2[i])
            return false;
    
    }
    
    return true;
    

    } 请注意,这不会像以前的答案那样修改原始数组。

    2020-02-08 12:32:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载