JavaScript比较两个对象是否相等的方法


Posted in Javascript onFebruary 06, 2015

本文实例讲述了JavaScript比较两个对象是否相等的方法。分享给大家供大家参考。具体如下:

在Python中可以通过cmp()内建函数来比较两个对象所包涵的数据是否相等(数组、序列、字典)。但是在javascript语言中并没有相关的实现。本js代码通过对js对象进行各方面的比较来判断两个对象是否相等

cmp = function( 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; 
};

使用:

objA={ 
 a:'123', 
 b:'456' 
}; 
objB={ 
 a:'123', 
 b:'000' 
}; 
var isEqual= cmp(objA, objB); 
 console.log(isEqual);  // false 不相同

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
原生js 秒表实现代码
Jul 24 Javascript
js防止页面被iframe调用的方法
Oct 30 Javascript
分享一个自己写的简单的javascript分页组件
Feb 15 Javascript
JavaScript合并两个数组并去除重复项的方法
Jun 13 Javascript
JSON+Jquery省市区三级联动
Jan 13 Javascript
javascript深拷贝(deepClone)详解
Aug 24 Javascript
Angularjs实现上传图片预览功能
Sep 01 Javascript
angularjs性能优化的方法
Sep 05 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
js实现图片实时时钟
Jan 15 Javascript
vue路由跳转传递参数的方式总结
May 10 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 Javascript
JavaScript 异常处理 详解
Feb 06 #Javascript
jquery中change()用法实例分析
Feb 06 #Javascript
javaScript的函数对象的声明详解
Feb 06 #Javascript
javascript实用方法总结
Feb 06 #Javascript
javascript实现限制上传文件大小
Feb 06 #Javascript
jquery实现鼠标滑过显示提示框的方法
Feb 05 #Javascript
javascript去除字符串左右两端的空格
Feb 05 #Javascript
You might like
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php生成局部唯一识别码LUID的代码
2012/10/06 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
2016/12/15 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
微信小程序 下拉菜单的实现
2017/04/06 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
python实现批量修改图片格式和尺寸
2018/06/07 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
Python模块相关知识点小结
2020/03/09 Python
Pycharm安装python库的方法
2020/11/24 Python
python爬虫 requests-html的使用
2020/11/30 Python
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
简历的自我评价范文
2014/02/04 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
土木工程求职信
2014/05/29 职场文书
党校毕业个人总结
2015/02/28 职场文书
python如何读取.mtx文件
2021/04/22 Python
Python图片处理之图片裁剪教程
2021/05/27 Python
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js