@@ -18,47 +18,41 @@ const isArray = Array.isArray;
18
18
const keyList = Object . keys ;
19
19
const hasProp = Object . prototype . hasOwnProperty ;
20
20
21
- export function equal ( a : any , b : any ) : boolean {
21
+ export const equal = ( a : any , b : any ) : boolean => {
22
22
if ( Object . is ( a , b ) ) {
23
23
return true ;
24
24
}
25
25
26
26
if ( a && b && typeof a === 'object' && typeof b === 'object' ) {
27
- let arrA = isArray ( a ) , arrB = isArray ( b ) , i : number , length : number , key : string ;
28
-
29
- if ( arrA && arrB ) {
30
- length = a . length ;
31
- if ( length !== b . length ) {
27
+ if ( isArray ( a ) && isArray ( b ) ) {
28
+ if ( a . length !== b . length ) {
32
29
return false ;
33
30
}
34
- for ( i = 0 ; i < length ; i ++ ) {
31
+ for ( let i = 0 ; i < a . length ; i ++ ) {
35
32
if ( ! equal ( a [ i ] , b [ i ] ) ) {
36
33
return false ;
37
34
}
38
35
}
39
36
return true ;
40
37
}
41
38
42
- if ( arrA !== arrB ) {
39
+ if ( isArray ( a ) !== isArray ( b ) ) {
43
40
return false ;
44
41
}
45
42
46
- let keys = keyList ( a ) ;
47
- length = keys . length ;
48
-
43
+ const length = keyList ( a ) . length ;
49
44
if ( length !== keyList ( b ) . length ) {
50
45
return false ;
51
46
}
52
47
53
- for ( i = 0 ; i < length ; i ++ ) {
54
- if ( ! hasProp . call ( b , keys [ i ] ) ) {
48
+ for ( let i = 0 ; i < length ; i ++ ) {
49
+ if ( ! hasProp . call ( b , keyList ( a ) [ i ] ) ) {
55
50
return false ;
56
51
}
57
52
}
58
53
59
- for ( i = 0 ; i < length ; i ++ ) {
60
- key = keys [ i ] ;
61
- if ( ! equal ( a [ key ] , b [ key ] ) ) {
54
+ for ( let i = 0 ; i < length ; i ++ ) {
55
+ if ( ! equal ( a [ keyList ( a ) [ i ] ] , b [ keyList ( a ) [ i ] ] ) ) {
62
56
return false ;
63
57
}
64
58
}
0 commit comments