(_.merge in ES6 / ES7)Object.assign不覆盖未定义的值 [英] (_.merge in ES6/ES7)Object.assign without overriding undefined values
本文介绍了(_.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屋!
查看全文