function compareAtoB(a, b) {
if (a === b) return true;
if (!(a instanceof Object) || !(b instanceof Object)) return false;
if (Object.prototype.toString.call(a) !== Object.prototype.toString.call(b)) return false;
for (const i in a) {
if (Object.hasOwnProperty.call(a, i)) {
if (!Object.hasOwnProperty.call(b, i)) return false;
if (a[i] === b[i]) continue;
if (Object.prototype.toString.call(a[i]) == "[object Object]") {
if (!compareAtoB(a[i], b[i])) return false;
continue;
} else if (Object.prototype.toString.call(a[i]) == "[object Array]") {
if (!compareAtoB(a[i], b[i])) return false;
continue;
} else if (!Object.is(a[i], b[i])) {
return false;
}
}
}
for (const i in b) {
if (Object.hasOwnProperty.call(b, i) && !Object.hasOwnProperty.call(a, i)) return false;
}
return true;
}
项目中表单修改时,需要前端判断表单是否修改过,未修改禁止调用接口,因为数据太复杂,所以封装一下方法