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 flash激活
Oct 19 Javascript
img标签中onerror用法
Aug 13 Javascript
js实现点击链接后窗口缩小并居中的方法
Mar 02 Javascript
Bootstrap框架下下拉框select搜索功能
Mar 26 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
JS判断form内所有表单是否为空的简单实例
Sep 09 Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Dec 15 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
Dec 23 Javascript
AngularJS 文件上传控件 ng-file-upload详解
Jan 13 Javascript
Webpack 服务器端代码打包的示例代码
Sep 19 Javascript
vue.js实现的绑定class操作示例
Jul 06 Javascript
微信小程序实现省市区三级地址选择
Jun 21 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
杏林同学录(五)
2006/10/09 PHP
简单的PHP缓存设计实现代码
2011/09/30 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
smarty缓存用法分析
2014/12/16 PHP
php实现的生成排列算法示例
2019/07/25 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
python持久性管理pickle模块详细介绍
2015/02/18 Python
Python编程之属性和方法实例详解
2015/05/19 Python
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Python三级菜单的实例
2017/09/13 Python
单链表反转python实现代码示例
2018/02/08 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
护理自荐信范文
2013/10/05 职场文书
2014年创卫实施方案
2014/02/18 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
卖车协议书范例
2014/09/16 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL