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 window.onload 加载多个函数的方法
Nov 02 Javascript
jQuery图片播放8款精美插件分享
Feb 17 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
Aug 18 Javascript
JavaScript中的Math.LOG2E属性使用详解
Jun 14 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
深入学习jQuery Validate表单验证
Jan 18 Javascript
Javascript动画效果(3)
Oct 11 Javascript
Bootstrap的modal拖动效果
Dec 25 Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
express.js中间件说明详解
Mar 19 Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 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
7个超级实用的PHP代码片段
2011/07/11 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
javascript for循环设法提高性能
2010/02/24 Javascript
js更优雅的兼容
2010/08/12 Javascript
基于JQuery的一句话搞定手风琴菜单
2012/09/14 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
JavaScript中操作字符串之localeCompare()方法的使用
2015/06/06 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
Vue.js更改调试地址端口号的实例
2018/09/19 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
基于python历史天气采集的分析
2019/02/14 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
python爬虫添加请求头代码实例
2019/12/28 Python
PyTorch-GPU加速实例
2020/06/23 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
急诊科护士自我鉴定
2013/10/14 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers