arraysSimilar.js 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=['str
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; }