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

JavaScript:基于指定数组合并对象数组并补全缺失字段默认值

JavaScript数组合并:保留指定字段值并补充默认值

需求说明

基于arr1的结构合并两个数组,规则如下:

  • 同名字段(如name)保留arr1中的值
  • 指定字段phone优先取arr2中对应id对象的值
  • 若phone在两者中均不存在,补充默认值00000

原始数组

// 修正了arr1中缺失的逗号语法错误
const arr1 = [{'id':'1', 'name':'name11'}, {'id':'3', 'name':'name13'}, {'id':'4', 'name':'name14'}];
const arr2 = [{'id':'1', 'name':'name1', 'phone' : 12345}, {'id':'2', 'name':'name2', 'phone' : 12345}, {'id':'3', 'name':'name3', 'phone' : 12345}];

解决方案

通过Array.map遍历arr1,结合Array.find匹配arr2中对应id的对象,按规则合并字段:

const mergedArr = arr1.map(item1 => {
  // 查找arr2中id匹配的对象
  const matchedItem = arr2.find(item2 => item2.id === item1.id);
  // 合并:保留arr1所有字段,phone字段优先取匹配项的值,否则用默认值
  return {
    ...item1,
    phone: matchedItem?.phone || '00000'
  };
});

结果输出

[
  {"id":"1","name":"name11","phone":12345},
  {"id":"3","name":"name13","phone":12345},
  {"id":"4","name":"name14","phone":"00000"}
]

说明

  • 使用扩展运算符...item1保留arr1的所有字段,确保同名字段(如name)不会被覆盖
  • 可选链?.避免找不到匹配项时出现undefined报错
  • 默认值用字符串'00000',若使用数字00000会被JavaScript解析为0,不符合示例结果要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:02