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 相关文章推荐
CCPry JS类库 代码
Oct 30 Javascript
JS鼠标滑过图片时切换图片实现思路
Sep 12 Javascript
鼠标选择动态改变网页背景颜色的JS代码
Dec 10 Javascript
再谈javascript原型继承
Nov 10 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
May 20 Javascript
jQuery Ajax页面局部加载方法汇总
Jun 02 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
Javascript实现跨域后台设置拦截的方法详解
Aug 04 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
Oct 25 Javascript
Vue官方文档梳理之全局配置
Nov 22 Javascript
微信小程序自定义底部弹出框
Nov 16 Javascript
jQuery冲突问题解决方法
Jan 19 jQuery
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 高手之路(一)
2006/10/09 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
2016/10/10 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
利用Python学习RabbitMQ消息队列
2015/11/30 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
在pycharm中显示python画的图方法
2019/08/31 Python
python sorted函数的小练习及解答
2019/09/18 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
五一服装活动方案
2014/01/11 职场文书
十周年庆典策划方案
2014/06/03 职场文书
工程质量保证书
2015/05/09 职场文书
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers