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 相关文章推荐
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
Jun 16 Javascript
使用script的src实现跨域和类似ajax效果
Nov 10 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
May 06 Javascript
动态加载JavaScript文件的两种方法
Apr 22 Javascript
jQuery基于ID调用指定iframe页面内的方法
Jul 06 Javascript
JavaScript模块化之使用requireJS按需加载
Apr 12 Javascript
node.js操作MongoDB的实例详解
Oct 11 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
JavaScript代码调试方法实例小结
Jan 05 Javascript
详解微信小程序支付流程与梳理
Jul 16 Javascript
js基础语法与maven项目配置教程案例
Jul 15 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
用PHP函数解决SQL injection
2006/12/09 PHP
php5 pdo新改动加载注意事项
2008/09/11 PHP
PHP 输出简单动态WAP页面
2009/06/09 PHP
php 生成WML页面方法详解
2009/08/09 PHP
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
python实现内存监控系统
2021/03/07 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
PyTorch基本数据类型(一)
2019/05/22 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
MIS软件工程师的面试题
2016/04/22 面试题
医学院学生求职简历的自我评价
2013/10/24 职场文书
司机岗位职责
2013/11/15 职场文书
致短跑运动员加油稿
2015/07/21 职场文书