您的位置:首页 > Web前端 > JavaScript

【下班后学js】判断传入的两个数组是否相似

2016-01-03 22:08 1001 查看
/*
* param1 Array
* param2 Array
* return true or false
*/
function arraysSimilar(arr1, arr2){
if (arr1 instanceof Array){
return false;
}
if (arr2 instanceof Array){
return false;
}
if (arr1.length !== arr2.length){
return false;
}

var i = 0,
n = arr1.length,
countMap1 = {},
countMap2 = {},
t1, t2,
TYPES = ['string', 'boolean', 'number',
'undefined', 'null', 'function',
'data', 'window'];

for (; i < n; i++){
t1 = typeOf(arr1[i]);
t2 = typeOf(arr2[i]);
if (countMap1[t1]){
countMap1[t1]++;
} else {
countMap1[t1] = 1;
}
if (countMap2[t2]){
countMap2[t2]++;
} else {
countMap2[t2] = 1;
}
}

function typeOf(ele){
var r;
if (ele === null) r = 'null';
else if (ele == window) r = 'window';
else if (ele instanceof Array) r = 'array';
else if (ele instanceof Date) r = 'date';
else r = typeof ele;
return r;
}

for (i = 0, n = TYPES.length; i < n; i++){
if (countMap1[TYPES[i]] !== countMap2[TYPES[i]]){
return false;
}
}

return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: