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 相关文章推荐
用javascript实现的仿Flash广告图片轮换效果
Apr 24 Javascript
细说浏览器特性检测(2)-通用事件检测
Nov 05 Javascript
浅析Cookie中的Path与domain
Dec 18 Javascript
escape函数解决js中ajax传递中文出现乱码问题
Oct 30 Javascript
Jquery对select的增、删、改、查操作
Feb 06 Javascript
深入分析下javascript中的[]()+!
Jul 07 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
微信小程序使用Promise简化回调
Feb 06 Javascript
解决vue-cli webpack打包后加载资源的路径问题
Sep 25 Javascript
在小程序Canvas中使用measureText的方法示例
Oct 19 Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 Javascript
原生JS实现随机点名项目的实例代码
Apr 30 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/10/09 PHP
第十节--抽象方法和抽象类
2006/11/16 PHP
php 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
jquery异步请求实例代码
2011/06/21 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
[49:17]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第三场 1月26日
2021/03/11 DOTA
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
Django中的Signal代码详解
2018/02/05 Python
python3学生名片管理v2.0版
2018/11/29 Python
python语言的优势是什么
2020/06/17 Python
CSS3 简写animation
2012/05/10 HTML / CSS
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
企业面试题试卷附带答案
2015/12/20 面试题
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python