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
相关产品推荐
相关产品推荐

