javascript 简单实现对两个数组相似度的检验
2015-05-18 22:37
531 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>js 检测两个数组是否相似</title> </head> <body> <script> //数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。 //数组的长度一致。 //类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window. 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; i < TYPES.length; i++) { if (countMap1[TYPES[i]] != countMap2[TYPES[i]]) return false; } return true; } document.write(arraysSimilar([1,true], [false, 2])); </script> </body> </html>
数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的 数组的长度一致 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.
相关文章推荐
- JavaScript简单实现合并两个Json对象的方法示例
- 分享两个JavaScript打乱数组顺序实现随机排序洗牌的方法(应用于音乐视频的随机播放等)
- javascript数组克隆简单实现方法
- 【JavaScript】JS提取任意两个数组的公共部分(超简单)【原创】
- javascript数组克隆简单实现方法
- JavaScript实现判断传入的两个数组是否相似
- JavaScript 数组(Array) sort 排序函数实现的简单高阶函数原理
- JavaScript实现两个小球碰撞简单模型【未完】
- javascript的数组元素,为Array增加两个函数,实现删除功能
- 用Javascript实现对HTML表格简单的增删查改
- JavaScript实现-猴子吃香蕉,分割数组-Chunky Monkey
- javascript实现的闭包简单实例
- JavaScript实现一个简单数据结构树
- 面试题:实现两个N*N矩阵的乘法,矩阵由一维数组表示
- JavaScript代码轻松实现网页内容禁止复制(代码简单)
- Javascript简单实现可拖动的div
- javascript判断两个IP地址是否在同一个网段的实现思路
- Arcgis for Javascript实现两个地图的联动
- javascript中利用数组实现的循环队列
- JavaScript中数组的转置的实现