JS判断两个数组或对象是否相同的方法示例


Posted in Javascript onFebruary 28, 2019

本文实例讲述了JS判断两个数组或对象是否相同的方法。分享给大家供大家参考,具体如下:

JS 判断两个数组是否相同

要判断2个数组是否相同,首先要把数组进行排序,然后转换成字符串进行比较。

JSON.stringify([1,2,3].sort()) === JSON.stringify([3,2,1].sort()); //true

或者

[1,2,3].sort().toString() === [3,2,1].sort().toString(); //true

经验证,上述方法对复杂数组结构不适用。

JS 判断两个对象是否相同

这是网上某大神封装对比对象是否相同的 function。

let cmp = ( x, y ) => {
// If both x and y are null or undefined and exactly the same
    if ( x === y ) {
      return true;
    }
// If they are not strictly equal, they both need to be Objects
    if ( ! ( x instanceof Object ) || ! ( y instanceof Object ) ) {
      return false;
    }
//They must have the exact same prototype chain,the closest we can do is
//test the constructor.
    if ( x.constructor !== y.constructor ) {
      return false;
    }
    for ( var p in x ) {
      //Inherited properties were tested using x.constructor === y.constructor
      if ( x.hasOwnProperty( p ) ) {
        // Allows comparing x[ p ] and y[ p ] when set to undefined
        if ( ! y.hasOwnProperty( p ) ) {
          return false;
        }
        // If they have the same strict value or identity then they are equal
        if ( x[ p ] === y[ p ] ) {
          continue;
        }
        // Numbers, Strings, Functions, Booleans must be strictly equal
        if ( typeof( x[ p ] ) !== "object" ) {
          return false;
        }
        // Objects and Arrays must be tested recursively
        if ( ! Object.equals( x[ p ], y[ p ] ) ) {
          return false;
        }
      }
    }
    for ( p in y ) {
      // allows x[ p ] to be set to undefined
      if ( y.hasOwnProperty( p ) && ! x.hasOwnProperty( p ) ) {
        return false;
      }
    }
    return true;
};

经检测,同样也不支持复杂数据结构的对象。

一般情况下用的话上述2种方法已经够用了,拿来作比较的一般都是简单的数据结构。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
Jul 04 Javascript
jQuery实现鼠标可拖动调整表格列宽度
May 26 Javascript
javascript每日必学之条件分支
Feb 17 Javascript
JS之获取样式的简单实现方法(推荐)
Sep 13 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
详解基于Vue+Koa的pm2配置
Oct 24 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
Dec 03 Javascript
js+springMVC 提交数组数据到后台的实例
Sep 21 Javascript
Vue实现兄弟组件间的联动效果
Jan 21 Javascript
Vue的props父传子的示例代码
May 20 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
jQuery.parseJSON()函数详解
Feb 28 #jQuery
js获取form表单中name属性的值
Feb 27 #Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 #Javascript
jQuery each和js forEach用法比较
Feb 27 #jQuery
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 #Javascript
Vue CLI 2.x搭建vue(目录最全分析)
Feb 27 #Javascript
JavaScript中filter的用法实例分析
Feb 27 #Javascript
You might like
PHP中加密解密函数与DES加密解密实例
2014/10/17 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
JS实现生成会变大变小的圆环实例
2015/08/05 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
jquery制作属于自己的select自定义样式
2015/11/23 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
解决iView Table组件宽度只变大不变小的问题
2020/11/13 Javascript
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
python批量生成本地ip地址的方法
2015/03/23 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Pycharm更换python解释器的方法
2018/10/29 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
Python Lambda函数使用总结详解
2019/12/11 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
python中可以声明变量类型吗
2020/06/18 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
2015年幼儿园毕业感言
2014/02/12 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python