【下班后学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; }
相关文章推荐
- JavaScript与DOM(下)
- js操作json
- 2016.01.02JS滚轮事件详解
- JavaScript系列(一 :初识)
- seajs模块化开发初探
- JS 变量提升
- JS实现八种焦点轮播图(下)
- JavaScript与DOM(上)
- JS实现八种焦点轮播图(上)
- 《高性能javascript》一书要点和延伸(下)
- jstorm安装配置
- JS将毫秒时间戳转换成合适的时间字符串
- JS实现-语句
- js中的匿名函数
- jsonkit mrc于arc混编
- ABP理论学习之Javascript API(理论完结篇)
- JS函数预解析
- js子窗口获取父窗口输入框值
- 瞠目结舌的JavaScript技巧
- js中没有函数重载,怎样实现函数重载的功能?