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 相关文章推荐
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
JS实现重新加载当前页面或者父页面的几种方法
Nov 30 Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 Javascript
JS鼠标滚动分页效果示例
Jul 05 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
jQuery使用bind函数实现绑定多个事件的方法
Oct 11 jQuery
Vue动态控制input的disabled属性的方法
Jun 26 Javascript
vuejs2.0运用原生js实现简单拖拽元素功能
Aug 21 Javascript
js实现图片粘贴到网页
Dec 06 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
Apr 22 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
一个用php3编写的简单计数器
2006/10/09 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
微信小程序 http请求的session管理
2017/06/07 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
pyqt5中动画的使用详解
2020/04/01 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
PHP如何自定义函数
2016/09/16 面试题
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
会计专业毕业生自我鉴定
2013/10/29 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
学习心理学的体会
2014/11/07 职场文书
施工安全员岗位职责
2015/04/11 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
小学教师见习总结
2015/06/23 职场文书
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python