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))
  • 结果


    JavaScript 默认值剔除_第1张图片
  • 有坑
    JSON.stringify(NaN) => "null"
    JSON.stringify([undefined]) => "[null]"

—— 2020/06/09 By YSH, Mostly Suny.

你可能感兴趣的:(JavaScript 默认值剔除)