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 相关文章推荐
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
Apr 01 Javascript
js遍历、动态的添加数据的小例子
Jun 22 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
Sep 29 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
Jun 16 Javascript
浅谈jquery的html方法里包含特殊字符的处理
Nov 30 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
如何使node也支持从url加载一个module详解
Jun 05 Javascript
解决layui中的form表单与button的点击事件冲突问题
Aug 15 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
javascript单张多张图无缝滚动实例代码
May 10 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 Javascript
JavaScript 原型与原型链详情
Nov 02 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安全配置 如何配置使其更安全
2011/12/16 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
js单页hash路由原理与应用实战详解
2017/08/14 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
vue中的inject学习教程
2019/04/24 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
Python中关键字is与==的区别简述
2014/07/31 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
详解Python 最短匹配模式
2020/07/29 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
餐饮采购员岗位职责
2014/03/15 职场文书
促销活动总结怎么写
2014/06/25 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
Vue如何实现组件间通信
2021/05/15 Vue.js
javascript canvas实现雨滴效果
2021/06/09 Javascript