如何将数据库返回数组中的participant字段重构为participantDetails数组?
数组格式转换解决方案
可以通过 Array.map 结合对象解构、Object.entries 来实现需求,具体代码如下:
let response = [ { "team_id": 1, "team_name": "Avengers", "participant1": 98, "participant2": 99, "participant3": 100, "participant4": 101, "phase1": 0, "phase2": 0, "phase3": 0, "phase4": 0, "phase5": 0 }, { "team_id": 2, "team_name": "Skywalkers", "participant1": 102, "participant2": 103, "participant3": 104, "participant4": null, "phase1": 0, "phase2": 0, "phase3": 0, "phase4": 0, "phase5": 0 } ]; const transformedResponse = response.map(team => { // 提取所有以participant开头的属性,转换为指定格式的数组 const participantDetails = Object.entries(team) .filter(([key]) => key.startsWith('participant')) .map(([key, value]) => ({ [key]: value })); // 排除原对象中的participant属性,保留其他字段 const { participant1, participant2, participant3, participant4, ...restProps } = team; // 组合新对象返回 return { ...restProps, participantDetails }; }); console.log(transformedResponse);
代码说明
- 遍历处理每个对象:用
map遍历原数组中的每个团队对象,对每个对象单独处理 - 提取并转换参与者字段:
Object.entries(team)将对象转为键值对数组filter筛选出键名以participant开头的项map将每个键值对转为单独的对象,组成participantDetails数组
- 保留其他字段:通过对象解构排除所有
participant开头的属性,将剩余属性与新生成的participantDetails组合成最终对象
运行这段代码后,就能得到你期望的数组格式。
内容的提问来源于stack exchange,提问作者Er Pankaj Dhumal
相关产品推荐
相关产品推荐

