本文实例讲述了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