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 each()方法的使用方法
Mar 18 Javascript
DIY jquery plugin - tabs标签切换实现代码
Dec 11 Javascript
用JavaScript实现类似于ListBox功能示例代码
Mar 09 Javascript
Jquery倒计时源码分享
May 16 Javascript
详解javascript的变量与标识符
Jan 04 Javascript
用js动态添加html元素,以及属性的简单实例
Jul 19 Javascript
jQuery实现立体式数字动态增加(animate方法)
Dec 21 Javascript
JavaScript中清空数组的三种方式
Mar 22 Javascript
JavaScript中使用import 和require打包后实现原理分析
Mar 07 Javascript
浅谈React 服务器端渲染的使用
May 08 Javascript
JavaScript继承与聚合实例详解
Jan 22 Javascript
JavaScript基础之this和箭头函数详析
Sep 05 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通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
javascript定时器完整实例
2015/02/10 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
Node.js + Redis Sorted Set实现任务队列
2016/09/19 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
python psutil库安装教程
2018/03/19 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
Django框架下静态模板的继承操作示例
2019/11/08 Python
python编写微信公众号首图思路详解
2019/12/13 Python
python ETL工具 pyetl
2020/06/07 Python
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
大学生毕业自我鉴定范文
2013/09/19 职场文书
如何写你的创业计划书
2014/01/07 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
总经理岗位职责
2015/02/04 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
Python TypeError: ‘float‘ object is not subscriptable错误解决
2022/12/24 Python