为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红颜莎娜 2019-11-30 13:25:39
我有两个数组:一个数组填充了来自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?我如何知道第一个数组中的哪个值不在第二个数组中?
查看完整描述

3 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

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;


}

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


查看完整回答
反对 回复 2019-11-30
?
慕少森

TA贡献2019条经验 获得超9个赞

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


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');


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 455 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信