请问有什么好的办法可以判断两个数组的值是否相等吗比如: a = ['a','b','c','d']; b=['b','c','d','a'];顺序不同但是只要值是相同的话就返回true就可以了 谢谢大家
2 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
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贡献1906条经验 获得超10个赞
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
提交
取消
