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 相关文章推荐
Javascript中暂停功能的实现代码
Mar 04 Javascript
jQuery Ajax之load()方法
Oct 12 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
Nov 24 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
Aug 11 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 Javascript
jquery图片切换实例分析
Apr 15 Javascript
vue源码入口文件分析(推荐)
Jan 30 Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 Javascript
使用layer.msg 时间设置不起作用的解决方法
Sep 12 Javascript
Angular利用HTTP POST下载流文件的步骤记录
Jul 26 Javascript
如何HttpServletRequest文件对象并储存
Aug 14 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
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 xml文件操作代码(一)
2009/03/20 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
php实现转换ubb代码的方法
2015/06/18 PHP
Smarty变量用法详解
2016/05/11 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
JavaScript的目的分析
2007/01/05 Javascript
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
服装仓管员岗位职责
2014/06/17 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书