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 面向对象全新理练之原型继承
Dec 03 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
Feb 09 Javascript
jQuery 图片切换插件(代码比较少)
May 07 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
JS隐藏参数post传值实例
Apr 18 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
Dec 12 Javascript
详解在vue-cli项目中安装node-sass
Jun 21 Javascript
Angular实现下载安装包的功能代码分享
Sep 05 Javascript
JS实现从对象获取对象中单个键值的方法示例
Jun 05 Javascript
详解Vue中组件传值的多重实现方式
Aug 16 Javascript
npm 语义版本控制详解
Sep 10 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 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防注入及开发安全详细解析
2013/08/09 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
微信小程序实现上拉加载功能
2019/11/20 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
微信小程序实现锚点跳转
2020/11/23 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python实现的udp协议Server和Client代码实例
2014/06/04 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
几个SQL的面试题
2014/03/08 面试题
上班上网检讨书
2014/01/29 职场文书
淘宝好评语大全
2014/05/05 职场文书
奖励通知
2015/04/22 职场文书
爱国之歌(8首)
2019/09/29 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL