如何合并两个对象,覆盖空值?

How to merge two objects, overriding null values?(如何合并两个对象,覆盖空值?)

本文介绍了如何合并两个对象,覆盖空值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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>

这篇关于如何合并两个对象,覆盖空值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何合并两个对象,覆盖空值?

基础教程推荐