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拖拽(第一课 未兼容)拖拽思路
Mar 29 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 Javascript
jquery插件validation实现验证身份证号等
Jun 04 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
Feb 23 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 Javascript
JavaScript模块详解
Dec 18 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 Javascript
小程序实现左滑删除效果
Jul 25 Javascript
js定义类的方法示例【ES5与ES6】
Jul 30 Javascript
vue实现鼠标移过出现下拉二级菜单功能
Dec 12 Javascript
javascript实现简易的计算器
Jan 17 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
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
javascript事件问题
2009/09/05 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
ExtJS中设置下拉列表框不可编辑的方法
2014/05/07 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
2014/11/19 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
详解JS模块导入导出
2017/12/20 Javascript
解决vue-cli单页面手机应用input点击手机端虚拟键盘弹出盖住input问题
2018/08/25 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python读写unicode文件的方法
2015/07/10 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
python3学生名片管理v2.0版
2018/11/29 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
电子商务自荐书范文
2014/01/04 职场文书
节能减排倡议书
2014/04/15 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
社会实践活动总结范文
2014/07/03 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
2015年公司工作总结
2015/04/25 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python