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

如何合并两个JS对象,保留目标对象非空属性并覆盖空属性

实现方法

你要求的合并规则可以通过遍历obj1的属性逐个判定取值实现,以下是JavaScript的实现代码:

基础版(仅合并两个对象共有的属性,空值判定为空字符串)

const obj1 = {lastName: "", address1: "Some address"};
const obj2 = {lastName: "Salivan", address1: "1200 Getty Center Dr"};

const obj3 = Object.fromEntries(
  Object.entries(obj1).map(([key, value]) => {
    // 若obj1属性值为空则取obj2对应值,否则保留obj1原值
    return [key, value === '' ? obj2[key] : value];
  })
);

console.log(obj3); // 输出:{ lastName: 'Salivan', address1: 'Some address' }

扩展规则说明

  • 如果你的场景中「空值」还包含null、undefined,可以把判断条件修改为:value == null || value === ''
  • 如果需要把obj2中独有的、obj1不存在的属性也合并到最终结果中,可以用以下代码:
const obj3 = {
  // 先按规则处理obj1的所有属性
  ...Object.fromEntries(
    Object.entries(obj1).map(([key, value]) => [key, value === '' ? obj2[key] : value])
  ),
  // 追加obj2中obj1没有的属性
  ...Object.fromEntries(
    Object.entries(obj2).filter(([key]) => !obj1.hasOwnProperty(key))
  )
};

深对象合并补充

如果你的对象是包含嵌套对象的复杂结构,需要写递归逻辑处理嵌套层的合并,单层对象用上述代码即可满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:10