Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit a277bcf

Browse files
TehShrikelgalfaso
authored andcommitted
refactor(equals): Cleanup equals function for readability
- Removes unnecessary nested if condition - Simplify check when one argument is a regex Closes: #13650
1 parent 7985416 commit a277bcf

File tree

1 file changed

+27
-28
lines changed

1 file changed

+27
-28
lines changed

src/Angular.js

+27-28
Original file line numberDiff line numberDiff line change
@@ -981,38 +981,37 @@ function equals(o1, o2) {
981981
if (o1 === null || o2 === null) return false;
982982
if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN
983983
var t1 = typeof o1, t2 = typeof o2, length, key, keySet;
984-
if (t1 == t2) {
985-
if (t1 == 'object') {
986-
if (isArray(o1)) {
987-
if (!isArray(o2)) return false;
988-
if ((length = o1.length) == o2.length) {
989-
for (key = 0; key < length; key++) {
990-
if (!equals(o1[key], o2[key])) return false;
991-
}
992-
return true;
993-
}
994-
} else if (isDate(o1)) {
995-
if (!isDate(o2)) return false;
996-
return equals(o1.getTime(), o2.getTime());
997-
} else if (isRegExp(o1)) {
998-
return isRegExp(o2) ? o1.toString() == o2.toString() : false;
999-
} else {
1000-
if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||
1001-
isArray(o2) || isDate(o2) || isRegExp(o2)) return false;
1002-
keySet = createMap();
1003-
for (key in o1) {
1004-
if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
984+
if (t1 == t2 && t1 == 'object') {
985+
if (isArray(o1)) {
986+
if (!isArray(o2)) return false;
987+
if ((length = o1.length) == o2.length) {
988+
for (key = 0; key < length; key++) {
1005989
if (!equals(o1[key], o2[key])) return false;
1006-
keySet[key] = true;
1007-
}
1008-
for (key in o2) {
1009-
if (!(key in keySet) &&
1010-
key.charAt(0) !== '$' &&
1011-
isDefined(o2[key]) &&
1012-
!isFunction(o2[key])) return false;
1013990
}
1014991
return true;
1015992
}
993+
} else if (isDate(o1)) {
994+
if (!isDate(o2)) return false;
995+
return equals(o1.getTime(), o2.getTime());
996+
} else if (isRegExp(o1)) {
997+
if (!isRegExp(o2)) return false;
998+
return o1.toString() == o2.toString();
999+
} else {
1000+
if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) ||
1001+
isArray(o2) || isDate(o2) || isRegExp(o2)) return false;
1002+
keySet = createMap();
1003+
for (key in o1) {
1004+
if (key.charAt(0) === '$' || isFunction(o1[key])) continue;
1005+
if (!equals(o1[key], o2[key])) return false;
1006+
keySet[key] = true;
1007+
}
1008+
for (key in o2) {
1009+
if (!(key in keySet) &&
1010+
key.charAt(0) !== '$' &&
1011+
isDefined(o2[key]) &&
1012+
!isFunction(o2[key])) return false;
1013+
}
1014+
return true;
10161015
}
10171016
}
10181017
return false;

0 commit comments

Comments
 (0)