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

js判断两个数组的值是否相等 值的顺序可能不同

js判断两个数组的值是否相等 值的顺序可能不同

弑天下 2019-03-18 21:03:17
请问有什么好的办法可以判断两个数组的值是否相等吗比如: a = ['a','b','c','d']; b=['b','c','d','a'];顺序不同但是只要值是相同的话就返回true就可以了 谢谢大家
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

function f(a, b) {
    m = new Map()
    a.forEach(o => m.set(o, (m.get(o)||0) + 1));
    b.forEach(o => m.set(o, (m.get(o)||0) - 1));    for (var value of m.values()) {        if(value !== 0){ return false}
    }    return true}


查看完整回答
反对 回复 2019-03-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

isContained =(a, b)=>{        if(!(a instanceof Array) || !(b instanceof Array)) return false;        if(a.length != b.length) return false;     
        for(var i = 0, len = b.length; i < len; i++){            if(a.indexOf(b[i]) == -1 && b.indexOf(a[i]) == -1) {            
                return false;
            
            }
        }        return true;
    }
    arr1 = [1,2,3,4,'obj'];
    arr2 = [4,3,2,1,'obj'];
    alert(isContained(arr1,arr2));

如果不习惯箭头函数:

function isContained (a, b){        if(!(a instanceof Array) || !(b instanceof Array)) return false;        if(a.length != b.length) return false;    
        for(var i = 0, len = b.length; i < len; i++){            if(a.indexOf(b[i]) == -1 && b.indexOf(a[i]) == -1) {            
                return false;
            
            }
        }        return true;
    }
    arr1 = [1,2,3,4,'obj'];
    arr2 = [4,3,2,1,'obj'];
    alert(isContained(arr1,arr2));


查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 1632 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号