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

本文实例讲述了JavaScript比较两个对象是否相等的方法。分享给大家供大家参考。具体如下:

在Python中可以通过cmp()内建函数来比较两个对象所包涵的数据是否相等(数组、序列、字典)。但是在javascript语言中并没有相关的实现。本js代码通过对js对象进行各方面的比较来判断两个对象是否相等

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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 ;
};

使用:

?
1
2
3
4
5
6
7
8
9
10
objA={
  a: '123' ,
  b: '456'
};
objB={
  a: '123' ,
  b: '000'
};
var isEqual= cmp(objA, objB);
  console.log(isEqual);  // false 不相同

希望本文所述对大家的javascript程序设计有所帮助。


转载链接:https://www.jb51.net/article/60826.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值