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

如何用JavaScript为JSON对象嵌套数组补全缺失的默认键值对?

为嵌套JSON对象的contact和address字段补全默认值(JavaScript实现)

需求说明

需要处理包含嵌套数组的JSON对象,为其中的contact和address字段补全默认键值:

  • contact默认结构:{"phone": "", "email" : "", "fax": "", "website": ""}
  • address默认结构:{"city": "", "country": "", "house_number": "", "street name": ""}
    若目标字段存在缺失的键,自动填充为上述默认空字符串。

输入示例

{
  "data": [
    {
      "name": "John",
      "contact": {
        "phone": "987-654-3210",
        "email": "john123@xyz.com"
      },
      "address": {
        "city": "Berlin",
        "country": "Germany"
      }
    }
  ]
}

期望输出

{
  "data": [
    {
      "name": "John",
      "contact": {
        "phone": "987-654-3210",
        "email": "john123@xyz.com",
        "fax": "",
        "website": ""
      },
      "address": {
        "city": "Berlin",
        "country": "Germany",
        "house_number": "",
        "street name": ""
      }
    }
  ]
}

实现代码

先定义默认结构,再通过遍历数组合并默认值与原数据:

// 定义默认字段结构
const DEFAULT_CONTACT = {
  phone: "",
  email: "",
  fax: "",
  website: ""
};

const DEFAULT_ADDRESS = {
  city: "",
  country: "",
  house_number: "",
  "street name": ""
};

// 处理数据的函数
function fillDefaultFields(items) {
  return items.map(item => {
    // 合并默认contact与原数据,补全缺失键
    const filledContact = { ...DEFAULT_CONTACT, ...item.contact };
    // 合并默认address与原数据,补全缺失键
    const filledAddress = { ...DEFAULT_ADDRESS, ...item.address };
    // 返回包含补全后字段的新对象
    return { ...item, contact: filledContact, address: filledAddress };
  });
}

// 使用示例
const inputData = {
  "data": [
    {
      "name": "John",
      "contact": {
        "phone": "987-654-3210",
        "email": "john123@xyz.com"
      },
      "address": {
        "city": "Berlin",
        "country": "Germany"
      }
    }
  ]
};

// 执行补全操作
inputData.data = fillDefaultFields(inputData.data);

// 打印结果
console.log(JSON.stringify(inputData, null, 2));

代码说明

  • 使用ES6的展开运算符(...)合并对象:默认对象的键会被原数据中已存在的键覆盖,缺失的键则保留默认的空字符串。
  • 若原对象中没有contact或address字段,...item.contact会被解析为undefined,展开后不影响结果,最终会直接使用完整的默认结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 06:35:00