如何判断两个数组内容类型一致但顺序可变?
- 内容介绍
- 文章标签
- 相关推荐
本文共计209个文字,预计阅读时间需要1分钟。
javascriptarraysSimilar(arr1, arr2) { if (!(arr1 instanceof Array) || !(arr2 instanceof Array)) return false; if (arr1.length !==arr2.length) return false;
var i=0, n=arr1.length, countMap1={}, countMap2={};
for (; i for (var key in countMap1) { if (countMap1[key] !==countMap2[key]) return false; } return true;} function arraysSimilar(arr1, arr2){
if(!(arr1 instanceof Array) || !(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','date','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 instanceof Array) r='array';
else if (ele === window) r='window'
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 false;
}
本文共计209个文字,预计阅读时间需要1分钟。
javascriptarraysSimilar(arr1, arr2) { if (!(arr1 instanceof Array) || !(arr2 instanceof Array)) return false; if (arr1.length !==arr2.length) return false;
var i=0, n=arr1.length, countMap1={}, countMap2={};
for (; i for (var key in countMap1) { if (countMap1[key] !==countMap2[key]) return false; } return true;} function arraysSimilar(arr1, arr2){
if(!(arr1 instanceof Array) || !(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','date','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 instanceof Array) r='array';
else if (ele === window) r='window'
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 false;
}

