请问有什么好的办法可以判断两个数组的值是否相等吗比如: 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}
翻翻过去那场雪
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));添加回答
举报
0/150
提交
取消
