JSON.stringify
const isEqual = (a, b) => {
return JSON.stringify(a) === JSON.stringify(b)
}
缺点:
- 会忽略
undefined
- 会忽略
symbol
- 不能序列化函数
如果确定不会有上述内容,可以使用
递归判断每个字段
const isEqual = (a, b) => {
if(Object.keys(a).length !== Object.keys(b).length) {
return false;
}
return Object.keys(a).every(i => {
return typeof(a[i]) === typeof(b[i]) && (() => {
if(typeof(a[i]) === 'object' && a[i] != null) {
return isEqual(a[i], b[i])
} else {
return a[i] === b[i]
}
})()
})
}