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 相关文章推荐
Prototype Selector对象学习
Jul 23 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
Jan 17 Javascript
JS+css 图片自动缩放自适应大小
Aug 08 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 Javascript
javascript原型继承工作原理和实例详解
Apr 07 Javascript
Javascript基础知识盲点总结之函数
May 15 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
Node.js利用断言模块assert进行单元测试的方法
Sep 28 Javascript
JS限制输入框输入的实现代码
Jul 02 Javascript
vue工程全局设置ajax的等待动效的方法
Feb 22 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
Apr 24 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
Apr 26 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
php 魔术方法详解
2014/11/11 PHP
php编译安装php-amq扩展简明教程
2016/06/25 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
JavaScript 拾碎[三] 使用className属性
2010/10/16 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
原生js封装运动框架的示例讲解
2017/10/01 Javascript
vue2 全局变量的设置方法
2018/03/09 Javascript
基于vue中css预加载使用sass的配置方式详解
2018/03/13 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python中函数传参详解
2016/07/03 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python高级用法总结
2018/05/26 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
应届毕业生个人求职信范文
2014/01/29 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
消防隐患整改通知书
2015/04/22 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
Nginx+Tomcat负载均衡集群的实现示例
2021/10/24 Servers