You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在Lodash方法可实现用source覆盖dest的所有已有属性?

用Lodash实现指定属性覆盖的方法

你的需求是仅用source对象中与dest对象同名的属性值覆盖dest的对应属性,Lodash中可以直接通过组合方法实现,甚至有更简洁的写法替代你给出的代码:

等价实现

_.assign(dest, _.pick(source, _.keys(dest)))

和你原代码逻辑完全一致,只是用_.keys(dest)替代了原生的Object.keys(dest),两者效果相同。

自定义封装(可选)

Lodash没有专门的单一方法直接完成这个操作,但可以用_.transform封装成更易用的自定义函数:

const pickAndAssign = (dest, source) => _.transform(dest, (res, _, key) => {
  if (source.hasOwnProperty(key)) {
    res[key] = source[key];
  }
}, dest);

调用时直接执行pickAndAssign(dest, source)即可,逻辑和原代码完全匹配。

嵌套对象场景的扩展

如果需要递归处理嵌套对象的同名属性覆盖,可以改用_.merge配合_.pick:

_.merge(dest, _.pick(source, _.keys(dest)))

注意:_.merge是递归合并逻辑,和原代码的浅覆盖行为不同,需根据实际需求选择。

内容的提问来源于stack exchange,提问作者SimoneMSR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:14:50