如何动态地给对象添加某个属性

1,331 阅读1分钟

很多时候,我们会面临比较特殊的一些情况, 需要我们根据变量值是否为null或者undefined来对对象进行属性的增加,如果值是undefined或null,就不添加这个属性。

let a = null
let b = 123
const m = {
    a: a,
    b: b
}

如果像这样,直接赋值,就会导致m出现为null的a属性,而我们只需要m有b属性就可以了。这个时候,我们可以这样利用对象的扩展运算符来实现。

let a = null
let b = 123
const m = {
    ...[a].reduce((s, o) => {
        if(o !== null && o !== undefined) {
            s['a'] = o
            return s 
        } else {
            return {}
        }
    }, {}),
    ...[b].reduce((s, o) => {
        if(o !== null && o !== undefined) {
            s['b'] = o
            return s 
        } else {
            return {}
        }
    }, {}),
}

最终我们就可以达到这样的效果了

image.png