如何在使用 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 省略空值的同时合并两个对象的主要内容,如果未能解决你的问题,请参考以下文章