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下jstree简单应用 - v1.0
Apr 14 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
Oct 20 Javascript
Javascript 实现复制(Copy)动作方法大全
Jun 20 Javascript
使用正则表达式的格式化与高亮显示json字符串
Dec 03 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
Aug 25 Javascript
使用 jQuery 实现表单验证功能
Jul 05 jQuery
Bootstrap 3多级下拉菜单实例
Nov 23 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 Javascript
利用layer实现表单完美验证的方法
Sep 26 Javascript
Vue可自定义tab组件用法实例
Oct 24 Javascript
vue学习笔记之给组件绑定原生事件操作示例
Feb 27 Javascript
vuex的使用步骤
Jan 06 Vue.js
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正则表达式之定界符和原子介绍
2012/10/05 PHP
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
MUI 实现侧滑菜单及其主体部分上下滑动的方法
2018/01/25 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
vue+element 实现商城主题开发的示例代码
2020/03/26 Javascript
js实现简易ATM功能
2020/10/27 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
Python测试模块doctest使用解析
2019/08/10 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
经典C++面试题一
2016/11/06 面试题
Shell如何接收变量输入
2016/08/06 面试题
初中英语教学反思
2014/01/25 职场文书
《春雨》教学反思
2014/04/24 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
MongoDB数据库的安装步骤
2021/06/18 MongoDB
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS