JavaScript 默认值剔除

  • 方法
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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。