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 相关文章推荐
将jQuery应用于login页面的问题及解决
Oct 17 Javascript
javascript小数四舍五入多种方法实现
Dec 23 Javascript
js数组操作学习总结
Nov 04 Javascript
js 处理数组重复元素示例代码
Dec 27 Javascript
require.js深入了解 require.js特性介绍
Sep 04 Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 Javascript
jquery html动态添加的元素绑定事件详解
May 24 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
Webpack打包字体font-awesome的方法示例
Apr 26 Javascript
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
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网上商城购物车设计代码分享
2012/02/15 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php制作简单模版引擎
2016/04/07 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
代码生成器 document.write()
2007/04/15 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
jQuery select操作控制方法小结
2010/05/26 Javascript
jquery获取下拉列表的值为null的解决方法
2011/03/18 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
vue mounted组件的使用
2018/06/18 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
通过shell+python实现企业微信预警
2019/03/07 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Python ORM编程基础示例
2020/02/02 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
高中军训感言400字
2014/02/24 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
ubuntu下常用apt命令介绍
2022/06/05 Servers