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 showModalDialog 多层模态窗口实现页面提交及刷新的代码
Nov 28 Javascript
基于Jquery的动态创建DOM元素的代码
Dec 28 Javascript
js模拟C#中List的简单实例
Mar 06 Javascript
javascript写的一个模拟阅读小说的程序
Apr 04 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
Dec 02 Javascript
Node.js学习入门
Jan 03 Javascript
Bootstrap下拉菜单样式
Feb 07 Javascript
js时间戳格式化成日期格式的多种方法介绍
Feb 16 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
微信小程序轮播图swiper代码详解
Dec 01 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/13 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
AngularJS内置指令
2015/02/04 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
Bootstrap导航简单实现代码
2017/03/06 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
2019/08/16 Javascript
js实现中文实时时钟
2020/01/15 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python 私有函数的实例详解
2017/09/11 Python
python实现BackPropagation算法
2017/12/14 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python flask实现分页的示例代码
2018/08/02 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python列表操作方法详解
2020/02/09 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
大学生军训自我评价分享
2013/11/09 职场文书
党员公开承诺事项
2014/03/25 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
高中语文教学反思范文
2016/02/16 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Mysql Show Profile
2021/04/05 MySQL
详解 TypeScript 枚举类型
2021/11/02 Javascript