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 相关文章推荐
让网页根据不同IE版本显示不同的内容
Feb 08 Javascript
jquery $(this).attr $(this).val方法使用介绍
Oct 08 Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 Javascript
js获取鼠标位置实例详解
Dec 09 Javascript
javascript 将共享属性迁移到原型中去的实现方法
Aug 31 Javascript
详解react服务端渲染(同构)的方法
Sep 21 Javascript
node.js支持多用户web终端实现及安全方案
Nov 29 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
May 01 Javascript
微信小程序之批量上传并压缩图片的实例代码
Jul 05 Javascript
js实现删除li标签一行内容
Apr 16 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
May 20 Javascript
用Javascript实现发送短信验证码间隔功能
Feb 08 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 __autoload()方法真的影响性能吗?
2012/03/30 PHP
php生成短网址示例
2014/05/05 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
js编写选项卡效果
2017/05/23 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python错误处理操作示例
2018/07/18 Python
Python小进度条显示代码
2019/03/05 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
公司市场部岗位职责
2013/12/02 职场文书
五心教育心得体会
2014/09/04 职场文书
平安建设汇报材料
2014/12/29 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
公共场所卫生管理制度
2015/08/05 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
原生JS实现飞机大战小游戏
2021/06/09 Javascript
图文详解matlab原始处理图像几何变换
2021/07/09 Python