- 方法
function trimObject (obj, defaultValue) {
const trimmedObj = {}
const trimmedKeys = Object.keys(obj).filter(key => {
return JSON.stringify(obj[key]) !== JSON.stringify(defaultValue[key]) // 避免 Object、Function
})
trimmedKeys.forEach(key => {
trimmedObj[key] = obj[key]
})
return trimmedObj
}
- 验证
const defaultObject = {
color: '',
background: '',
attrs: {
id: 1
}
}
const obj = {
color: '#fff',
background: '',
other: 223,
attrs: {
id: 1
}
}
console.log(JSON.stringify(trimObject(obj, defaultObject), null, 4))
-
结果
- 有坑
JSON.stringify(NaN) => "null"
JSON.stringify([undefined]) => "[null]"
—— 2020/06/09 By YSH, Mostly Suny.