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

如何按指定字段分组聚合,将对象数组映射为嵌套数组结构

JS按字段分组生成嵌套数组实现

核心逻辑是先按n字段做分组聚合,再将分组结果转换为要求的嵌套数组结构,无需引入额外工具库,原生JS即可实现。

完整实现代码

// 原始输入数组
const source = [
    { "n": "David", "t": 1, "o": "2" },
    { "n": "Paul", "t": 3, "o": "4" },
    { "n": "David", "t": 5, "o": "6" },
    { "n": "David", "t": 7, "o": "8" },
    { "n": "Paul", "t": 9, "o": "10" }
];

// 第一步:按n字段分组,聚合同组的t、o属性为子数组
const groupResult = source.reduce((groupMap, item) => {
    const groupKey = item.n;
    if (!groupMap[groupKey]) {
        groupMap[groupKey] = [];
    }
    groupMap[groupKey].push([item.t, item.o]);
    return groupMap;
}, {});

// 第二步:将分组对象转为目标嵌套数组结构
const target = Object.entries(groupResult);

结果验证

运行上述代码后target的输出和需求给出的目标结构完全一致:

[
    [
        "David",
        [
            [1, "2"],
            [5, "6"],
            [7, "8"]
        ]
    ],
    [
        "Paul",
        [
            [3, "4"],
            [9, "10"]
        ]
    ]
]

说明:ES2015及后续版本规范中,Object.entries对字符串键的返回顺序和键第一次被插入的顺序一致,即最终结果里的分组顺序,和原数组中对应n值首次出现的顺序完全匹配,和示例排序要求相符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:48:22