javascript检测两个数组是否相似


Posted in Javascript onMay 19, 2015

JS要比较两个数组是否有相同的元素,即两个数组所有元素都相同,但元素的顺序不一定一致。只就需要先将数组进行排序,再比较两个数组是否相等。

<!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>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
[原创]网络复制内容时常用的正则+editplus
Nov 30 Javascript
一个用js实现控制台控件的代码
Sep 04 Javascript
某人初学javascript的时候写的学习笔记
Dec 30 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
Nov 13 Javascript
JQuery+EasyUI轻松实现步骤条效果
Feb 22 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
jQuery插件Echarts实现的渐变色柱状图
Mar 23 jQuery
bootstrap paginator分页插件的两种使用方式实例详解
Nov 14 Javascript
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
bootstrap table实现合并单元格效果
Dec 24 Javascript
Fetch超时设置与终止请求详解
May 18 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
10条建议帮助你创建更好的jQuery插件
May 18 #Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 #Javascript
JQuery中层次选择器用法实例详解
May 18 #Javascript
Jquery中基本选择器用法实例详解
May 18 #Javascript
Jquery注册事件实现方法
May 18 #Javascript
jquery中map函数遍历数组用法实例
May 18 #Javascript
jquery使用each方法遍历json格式数据实例
May 18 #Javascript
You might like
如何使用脚本模仿登陆过程
2006/11/22 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
PHP实现git部署的方法教程
2017/12/19 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Python类的专用方法实例分析
2015/01/09 Python
Python中运行并行任务技巧
2015/02/26 Python
Python实现的字典值比较功能示例
2018/01/08 Python
python批量替换页眉页脚实例代码
2018/01/22 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
面料业务员岗位职责
2013/12/26 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
教师见习总结范文
2015/06/23 职场文书
vue+spring boot实现校验码功能
2021/05/27 Vue.js
Python实现8种常用抽样方法
2021/06/27 Python