(_.merge in ES6 / ES7)Object.assign不覆盖未定义的值 [英] (_.merge in ES6/ES7)Object.assign without overriding undefined values

查看:514
本文介绍了(_.merge in ES6 / ES7)Object.assign不覆盖未定义的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

_.merge lodash中的功能。我希望在ES6或ES7中实现相同的目标。

There is _.merge functionality in lodash. I want to achieve the same thing in ES6 or ES7.

有这个片段:

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

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

I want to receive {key: 2}. Currently I receive {key: undefined}

这是 NOT 深度合并。

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

Is it possible? If yes then how to achieve that?

推荐答案

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

You can't achieve that with a straight usage of Object.assign, because each next object will rewrite the same keys for prev merge. The only way, to filter your incoming objects with some hand-crafted function.

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

这篇关于(_.merge in ES6 / ES7)Object.assign不覆盖未定义的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆