深度比較兩個對象:
function compare(origin, target) {
if (typeof target === 'object') {
if (typeof origin !== 'object') return false;
// 繼續去遞歸調用
for (const key of Object.keys(target)) {
if (!compare(origin[key], target[key])) {
return false;
}
}
return true;
}
return origin === target;
}
const A = {
a: 'b',
};
const B = {
a: 'b',
b: '1',
};
console.log(compare(A, B));
深度比較兩個數組:
function compare(arr1, arr2){
if (!arr1|| !arr2)
return false;
if (arr1.length != arr2.length)
return false;
for (let i = 0, l = arr1.length; i < l; i++) {
if (arr1[i] instanceof Array && arr2[i] instanceof Array) {
// 繼續去遞歸調用
if (!compare(arr1[i], arr2[i])) {
return false
}
else if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
compare(A,B);