javascript - (_.merge in ES6/ES7)Object.assign without overriding undefined values

标签 javascript ecmascript-6 lodash babeljs ecmascript-2016

_.merge lodash 中的功能。我想在 ES6 或 ES7 中实现同样的事情。

有这个片段:

Object.assign({}, {key: 2}, {key: undefined})

我想接收{key: 2}。目前我收到 {key: undefined}

不是深度合并。

这可能吗?如果是,那么如何实现?

最佳答案

您无法通过直接使用 Object.assign 来实现这一点,因为每个下一个对象都会为上一个合并重写相同的键。唯一的方法是使用一些手工制作的函数来过滤传入的对象。

function filterObject(obj) {
    const ret = {};
    Object.keys(obj)
        .filter((key) => obj[key] !== undefined)
        .forEach((key) => ret[key] = obj[key]);
    return ret;
}

关于javascript - (_.merge in ES6/ES7)Object.assign without overriding undefined values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39977214/

相关文章:

javascript - 如何将获取响应转换为数组缓冲区?

javascript - jQuery Div OnClick 触发兄弟链接

ecmascript-6 - 从 getter 获取选定的属性

javascript - 如何对数据进行分组?

javascript - 如何删除默认填充?

页面显示时的Javascript事件?

javascript - 如果第一个回调没有返回 Promise,那么可以调用吗?

javascript - Babel.js 支持 ES6 Object.observer() 方法吗?

javascript - Lodash 中的函数调用简写

javascript - 使用 lodash 将对象数组转换为对象