You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数据库返回数组中的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);

代码说明

  1. 遍历处理每个对象:用map遍历原数组中的每个团队对象,对每个对象单独处理
  2. 提取并转换参与者字段:
    • Object.entries(team)将对象转为键值对数组
    • filter筛选出键名以participant开头的项
    • map将每个键值对转为单独的对象,组成participantDetails数组
  3. 保留其他字段:通过对象解构排除所有participant开头的属性,将剩余属性与新生成的participantDetails组合成最终对象

运行这段代码后,就能得到你期望的数组格式。

内容的提问来源于stack exchange,提问作者Er Pankaj Dhumal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:30:49