如何在使用 lodash 省略空值的同时合并两个对象

Posted

技术标签:

【中文标题】如何在使用 lodash 省略空值的同时合并两个对象【英文标题】:How do I merge two objects while omitting null values with lodash 【发布时间】:2017-10-17 10:56:33 【问题描述】:

我研究了如何在省略空值的同时合并两个 javascript 对象,到目前为止,我尝试过使用合并、分配、克隆但没有成功。

这是我的测试(JSFiddle):

let defaultValues = code: '', price: 0, description: ''
let product = code: 'MyCode', price: null, description: 'Product Description'

//Merge two objects
let merged = _.merge(, defaultValues, product)
console.log(merged)

//My result
code: 'MyCode', price: null, description: 'Product Description'

//My expected result
code: 'MyCode', price: 0, description: 'Product Description'

我使用 VueJS 框架,当我在某些输入(使用 v-model)上有这些空属性时,我收到一个异常。

谢谢!

【问题讨论】:

【参考方案1】:

使用_.mergeWith:

let merged = _.mergeWith(
    , defaultValues, product,
    (a, b) => b === null ? a : undefined
)

Updated fiddle

【讨论】:

为什么我们传递一个空对象作为第一个参数? @Ernest: mergemergeWith 修改并返回它们的第一个参数,而不是创建一个新对象并返回它。

以上是关于如何在使用 lodash 省略空值的同时合并两个对象的主要内容,如果未能解决你的问题,请参考以下文章

跟着大佬学JavaScript之lodash防抖节流合并

pandas中表的合并与空值的使用

两个表进行左连接(LEFT JOIN ) 如何只显示右表中为空值的记录行,左表与右表存在关联的记录不显示。

避免合并空值的最佳方法

使用 Lodash 进行深度合并

Python 实战基础Pandas如何移除包含空值的行