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文字滚动停顿效果代码
Jun 28 Javascript
js 页面传参数时 参数值含特殊字符的问题
Dec 13 Javascript
TextArea 控件的最大长度问题(js json)
Dec 16 Javascript
js 效率组装字符串 StringBuffer
Dec 23 Javascript
判断控件是否已加载完成的代码
Feb 24 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
Dec 24 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
JavaScript编写简单的计算器
Nov 25 Javascript
jQuery Validation Plugin验证插件手动验证
Jan 26 Javascript
javascript表单正则应用
Feb 04 Javascript
解决微信小程序中的滚动穿透问题
Sep 16 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 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
session 的生命周期是多长
2006/10/09 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
js控制容器隐藏出现防止样式变化的两种方法
2014/04/25 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
Python在Console下显示文本进度条的方法
2016/02/14 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
罗技美国官网:Logitech美国
2020/01/22 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
《天安门广场》教学反思
2014/04/23 职场文书
诚信考试标语
2014/06/24 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
大队委员竞选稿
2015/11/20 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
JavaScript嵌入百度地图API的最详细方法
2021/04/16 Javascript
使用Redis做预定库存缓存功能
2022/04/02 Redis