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 相关文章推荐
学习ExtJS accordion布局
Oct 08 Javascript
js中继承的几种用法总结(apply,call,prototype)
Dec 26 Javascript
一个JS函数搞定网页标题(title)闪动效果
May 13 Javascript
Ext GridPanel加载完数据后进行操作示例代码
Jun 17 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 Javascript
jquery滚动条插件(可以自定义)
Dec 11 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 Javascript
js实现缓动动画
Nov 25 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双引号中访问数组元素报错的解决方法
2018/02/01 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
jQuery条件分页 代替离线查询(附代码)
2017/08/17 jQuery
js new Date()实例测试
2019/10/31 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
Python列表和元组的定义与使用操作示例
2017/07/26 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
椰子猫砂:CatSpot
2018/08/27 全球购物
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
应届护士推荐信
2013/11/16 职场文书
建筑节能汇报材料
2014/08/22 职场文书
雷锋电影观后感
2015/06/10 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS