JavaScript如何按字段映射规则将两个数组合并为指定格式对象数组
实现方案
实现思路
- 先将配置数组a转换为
name到header的映射表,提升键名查找效率 - 合并数组b中所有的独立对象为一个总对象,统一处理键名替换逻辑
- 遍历总对象的键值对,按照映射表替换键名,生成符合要求的结果数组
完整代码
function generateTargetArray(a, b) { // 生成键名映射表 const keyMap = a.reduce((map, item) => { map[item.name] = item.header; return map; }, {}); // 合并b数组的所有对象 const mergedB = Object.assign({}, ...b); // 替换键名生成结果对象 const resultObj = Object.entries(mergedB).reduce((obj, [oldKey, value]) => { // 没有匹配到映射规则时默认保留原键,不需要的话可以加判断过滤该键 const newKey = keyMap[oldKey] ?? oldKey; obj[newKey] = value; return obj; }, {}); // 按要求返回包裹在数组中的结果对象 return [resultObj]; } // 测试用例 const a =[{ name: 'CreatedDateTime', header: 'Tarih' },{ name: 'Name', header: 'Adi' }] const b= [{ CreatedDateTime:"10.1.2021" },{Name:"Merve"}] const c = generateTargetArray(a, b); console.log(c); // 输出:[{Tarih:"10.1.2021" , Adi:"Merve" }]
场景适配说明
如果你的实际业务中b数组的每个对象不需要合并,而是需要每个对象单独完成键名替换后返回数组,只需要删除合并逻辑,直接遍历b数组的每个对象做键名替换即可。
内容的提问来源于stack exchange,提问作者msanli224
相关产品推荐
相关产品推荐

