JavaScript比较两个对象是否相等的方法_javascript技巧

本文实例讲述了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 对象相等、javascript 对象 方法、javascript对象的方法、javascript字符串相等、javascript 判断相等,以便于您获取更多的相关知识。

时间: 2024-09-19 23:56:08

JavaScript比较两个对象是否相等的方法_javascript技巧的相关文章

JavaScript使用function定义对象并调用的方法_javascript技巧

本文实例讲述了JavaScript使用function定义对象并调用的方法.分享给大家供大家参考.具体分析如下: JS中你可以通过函数的方式定义对象,下面的JS代码定义了一个movie的函数对象,然后通过new的方法声明对象,调用起来也非常简单. <script type="text/javascript"> function movie(title, director) { this.title = title; this.director = director; } v

javascript比较两个日期相差天数的方法_javascript技巧

本文实例讲述了javascript比较两个日期相差天数的方法.分享给大家供大家参考.具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content

JavaScript isArray()函数判断对象类型的种种方法_javascript技巧

1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串.如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在). 但 typeof 的能力有限,其对于Date.RegExp类型返回的都是"object".如: 复制代码 代码如下: typ

JavaScript简单遍历DOM对象所有属性的实现方法_javascript技巧

本文实例讲述了JavaScript遍历DOM对象所有属性的实现方法.分享给大家供大家参考,具体如下: DOM对象的HTML: 复制代码 代码如下: <button id="btnToggleState" onclick="toggleStateManagement()">Disable State Cookie</button> 1.遍历DOM对象所有具备的属性(全属性.不管在HTML tag中是否设置都会遍历) var obj=docume

JavaScript判断变量是对象还是数组的方法_javascript技巧

typeof都返回object 在JavaScript中所有数据类型严格意义上都是对象,但实际使用中我们还是有类型之分,如果要判断一个变量是数组还是对象使用typeof搞不定,因为它全都返回object 复制代码 代码如下: var o = { 'name':'lee' }; var a = ['reg','blue'];   document.write( ' o typeof is ' + typeof o); document.write( ' <br />'); document.wr

JavaScript中对象的不同创建方法_javascript技巧

javascript中的对象与一般的面向对象的程序设计语言(c++,Java等)不同,甚至很少有人说它是面向对象的程序设计语言,因为它没有类.javaScript只有对象,不是类的实例.javascript中的对象是基于原型的. 1.1句点运算符创建 javascript中的对象实际上就是一个由属性组成的关联数组,属性由名称和值组成,值的类型可以是任何数据类型,或者函数和其他对象. 创建一个简单对象: var foo = {}; foo.prop_1 = 'bar'; foo.prop_2 =

Javascript中prototype属性实现给内置对象添加新的方法_javascript技巧

本文实例讲述了Javascript中prototype属性实现给内置对象添加新的方法.分享给大家供大家参考.具体实现方法如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>prototype

JavaScript通过prototype给对象定义属性用法实例_javascript技巧

本文实例讲述了JavaScript通过prototype给对象定义属性的用法.分享给大家供大家参考.具体分析如下: 下面的JS代码定义了movie对象.在使用对象的过程中又通过prototype给对象添加了isComedy属性,调用的时候直接使用object.isComedy即可,非常方便. <script type="text/javascript"> <!-- function movieToString() { return("title: "

JavaScript使用Math.Min返回两个数中较小数的方法_javascript技巧

本文实例讲述了JavaScript使用Math.Min返回两个数中较小数的方法.分享给大家供大家参考.具体如下: 下面JavaScript通过Math.Min返回两个数中较小的那个 <!DOCTYPE html> <html> <body> <p id="demo"> Click the button to return the lowest number of 5 and 10. </p> <button onclic