對象的複雜程度
{
attr1:{a:1,b:2},
attr2:'aaa',
attr3:[1,2,3],
attr4:[{abc:1,bcd:34,cd:'lalla'},{abc:134,bcd:55,cd:'lekif'}]
.....
}
不考慮對象key的順序
- 實現代碼
diffObject(obj1, obj2) {
if (!(obj1 instanceof Object) || !(obj2 instanceof Object)) {/* 判斷不是對象 */
return obj1 === obj2;
}
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
return false;
}
for (var attr in obj1) {
if (obj1[attr] instanceof Array && obj2[attr] instanceof Array) {
if (obj1[attr].length !== obj2[attr].length) {
return false;
}
for (let i = 0; i < obj1[attr].length; i++) {
if (!JSON.stringify(obj2[attr]).includes(JSON.stringify(obj1[attr][i]))) {
return false;
}
}
} else {
var t1 = obj1[attr] instanceof Object;
var t2 = obj2[attr] instanceof Object;
if (t1 && t2) {
let result = this.diffObject(obj1[attr], obj2[attr]);
if (!result)
return false;
} else if (obj1[attr] !== obj2[attr]) {
return false;
}
}
}
return true;
}
若有更好方法歡迎分享~~