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异步编程Promise模式的6个特性
Apr 03 Javascript
jquery常用方法及使用示例汇总
Nov 08 Javascript
JavaScript编程中window的location与history对象详解
Oct 26 Javascript
javascript常用函数(2)
Nov 05 Javascript
JavaScript简单实现弹出拖拽窗口(二)
Jun 17 Javascript
js拼接html字符串的注意事项
Oct 13 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
JS实现旋转木马式图片轮播效果
Jan 18 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
Apr 29 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 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批量删除超链接的实现方法
2015/10/19 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
一个可以随意添加多个序列的tag函数
2009/07/21 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
jQuery滚动条插件nanoscroller使用指南
2015/04/21 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python中django学习心得
2017/12/06 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Python实现重建二叉树的三种方法详解
2018/06/23 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
成功的餐厅经营创业计划书
2014/01/15 职场文书
技校毕业生自荐书
2014/05/23 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
暑期实践个人总结
2015/03/06 职场文书
2015年中秋节主持词
2015/07/30 职场文书
MySQL插入数据与查询数据
2022/03/25 MySQL
MySQL数据库 任意ip连接方法
2022/05/20 MySQL