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 相关文章推荐
理解JavaScript中的对象 推荐
Jan 09 Javascript
JavaScript伸缩的菜单简单示例
Dec 03 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
jquery实现通用的内容渐显Tab选项卡效果
Sep 07 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
微信小程序实战之上拉(分页加载)效果(2)
Apr 17 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
Mar 05 Javascript
解决layer弹出层msg的文字不显示的问题
Sep 11 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
微信小程序实现手指拖动选项排序
Apr 22 Javascript
JavaScript 反射学习技巧
Oct 16 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计算两个路径的相对路径
2013/06/14 PHP
php计划任务之ignore_user_abort函数实现方法
2015/01/08 PHP
php简单获取目录列表的方法
2015/03/24 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
prototype.js简单实现ajax功能示例
2017/10/18 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
jupyter实现重新加载模块
2020/04/16 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
个人自我鉴定总结
2014/03/25 职场文书
关于诚信的活动方案
2014/08/18 职场文书
大学毕业谢师宴致辞
2015/07/27 职场文书
浅谈Python魔法方法
2021/06/28 Java/Android