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

请求实现基于SubjectID与Month的数组对象转换需求

按科目分组生成年度成绩数组

需求说明

将给定的月度成绩数据,按科目(SubjectID/TitleName)分组,为每个科目生成长度为12的数组(对应1-12月),把对应月份的Average值填入数组对应索引位置(注意:月份是1起始,数组索引是0起始,需做减1转换),其余位置填充0。

原始输入数据

[
    {
        "Month": 2,
        "SubjectID": 25,
        "TitleName": "TEST32",
        "Average": 85
    },
    {
        "Month": 4,
        "SubjectID": 1,
        "TitleName": "TEST",
        "Average": 63
    },
    {
        "Month": 4,
        "SubjectID": 25,
        "TitleName": "TEST32",
        "Average": 88
    }
]

实现代码(JavaScript)

// 原始数据
const rawData = [
    { Month: 2, SubjectID: 25, TitleName: "TEST32", Average: 85 },
    { Month: 4, SubjectID: 1, TitleName: "TEST", Average: 63 },
    { Month: 4, SubjectID: 25, TitleName: "TEST32", Average: 88 }
];

// 按科目分组并生成年度数组
const result = Object.values(rawData.reduce((grouped, item) => {
    // 首次遇到该科目时,初始化包含12个0的数组
    if (!grouped[item.TitleName]) {
        grouped[item.TitleName] = {
            name: item.TitleName,
            data: new Array(12).fill(0)
        };
    }
    // 将成绩填入对应月份的索引位置
    grouped[item.TitleName].data[item.Month - 1] = item.Average;
    return grouped;
}, {}));

console.log(result);

输出结果

[
    {
        name: 'TEST32',
        data: [0, 85, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0]
    },
    {
        name: 'TEST',
        data: [0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0]
    }
]

内容的提问来源于stack exchange,提问作者Strywyr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:05:01