如何将携带唯一ID后缀的Object键值对整理为按ID分组的对象集合
实现代码
你可以通过对象遍历+字符串分割逻辑完成格式转换,代码可直接运行:
// 原始输入数据 const rawData = { email_IcWDC6iyNzsQe9sPss4Yy: "xyz@gmail.com", email_QVXeOX1vijCtpx8mdD662: "abc@gmail.com", mobile_IcWDC6iyNzsQe9sPss4Yy: "223", mobile_QVXeOX1vijCtpx8mdD662: "122", name_IcWDC6iyNzsQe9sPss4Yy: "mp", name_QVXeOX1vijCtpx8mdD662: "pp", }; const groupMap = {}; // 遍历所有键值对 for (const [key, value] of Object.entries(rawData)) { // 只切割第一个下划线,避免唯一ID自身带下划线时出错 const [field, id] = key.split('_', 2); // 初始化ID对应的默认对象 if (!groupMap[id]) { groupMap[id] = { id, name: "", email: "", mobile_no: "" }; } // 字段映射赋值 field === 'mobile' ? groupMap[id].mobile_no = value : groupMap[id][field] = value; } // 转成数组得到最终结果 const result = Object.values(groupMap); console.log(result);
核心说明
- 初始化时默认给所有字段赋值为空字符串,就算某个ID缺少对应字段也不会出现属性缺失的问题
- 针对mobile字段单独做了键名映射,完全匹配你要求的
mobile_no输出字段
内容的提问来源于stack exchange,提问作者prashant padadune
相关产品推荐
相关产品推荐

