JavaScript如何格式化API响应数据,将用户邮箱映射到字段修改记录
实现代码调整方案
直接以用户邮箱作为结果对象的键,遍历修改记录数组整理对应字段即可,以下是JavaScript实现参考:
参考的API返回结构(可根据你实际返回的字段名修改匹配)
const finalUpdate = { userEmail: "test@example.com", // 实际接口返回的用户邮箱字段名 field: [ // 3次修改记录数组 { key: "car_brand", value: "比亚迪", operateTime: "2024-06-10 12:00:00", editable: true, type: "string" }, { key: "car_price", value: 189800, operateTime: "2024-06-10 12:01:12", editable: true, type: "number" }, { key: "car_color", value: "山脉灰", operateTime: "2024-06-10 12:02:35", editable: false, type: "string" } ] }
调整后的处理代码
const formatResult = {} // 绑定邮箱为根键,映射整理修改记录 const userEmail = finalUpdate.userEmail formatResult[userEmail] = finalUpdate.field.map(record => { return { 字段键名: record.key, 取值: record.value, 操作时间: record.operateTime, 可编辑状态: record.editable, 字段类型: record.type } })
输出结果格式示例
{ "test@example.com": [ { "字段键名": "car_brand", "取值": "比亚迪", "操作时间": "2024-06-10 12:00:00", "可编辑状态": true, "字段类型": "string" }, // 剩余两次修改记录以此类推 ] }
- 如果邮箱字段是存在每一条修改记录的字段里,直接用reduce聚合即可,对应代码如下:
const formatResult = finalUpdate.field.reduce((acc, record) => { const email = record.userEmail // 每条记录里的邮箱字段名 if (!acc[email]) acc[email] = [] acc[email].push({ 字段键名: record.key, 取值: record.value, 操作时间: record.operateTime, 可编辑状态: record.editable, 字段类型: record.type }) return acc }, {})
内容的提问来源于stack exchange,提问作者NMSD
相关产品推荐
相关产品推荐

