怎么合并两个对象,覆盖空值?

本教程将介绍如何合并两个对象,覆盖空值?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么合并两个对象,覆盖空值? 教程 第1张

问题描述

我希望合并两个相似但不相同的对象,并覆盖其中一个对象中的空值(如果存在)。例如,我有这两个对象:

const obj1 = {
 a: 1,
 b: '',
 c: [],
 d: null
}

const obj2 = {
 a: 2,
 b: null,
 d: 1
}

合并的效果应该是:

const objMerged = {
 a: 2,
 b: '',
 c: [],
 d: 1
}

换句话说,合并对象中最重要的数据源是obj2,但它缺少来自obj1的一些属性,因此需要复制它们,而且一些obj2值是null,因此它们也应该取自obj1

编辑
我已尝试:

_.extend({}, obj1, obj2) 

Object.assign({}, obj1, obj2)

推荐答案

可以使用_.mergeWith(),合并回调中只取不是null的第二个值:

const obj1 = { a: 1, b: '', c: [], d: null }
const obj2 = { a: 2, b: null, d: 1 }

const result = _.mergeWith({}, obj1, obj2, (o, s) => _.isNull(s) ? o : s)

console.log(result)
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script>

好了关于怎么合并两个对象,覆盖空值?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。