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

如何合并数组中number前缀相同的JavaScript对象?

实现方案

你可以借助JavaScript的Array.prototype.reduce()方法高效完成这个合并操作,核心思路是遍历数组时提取每个对象number属性的前缀,以此为键聚合对应的person值。

完整代码示例

const originalArray = [
    {
        "number": "10a",
        "person": "Velvet"
    },
    {
        "number": "10b",
        "person": "Edna"
    },
    {
        "number": "11a",
        "person": "Shionne"
    },
    {
        "number": "11b",
        "person": "Aifread"
    }
];

const mergedResult = originalArray.reduce((acc, current) => {
    // 提取number的数字前缀(匹配开头连续的数字)
    const prefix = current.number.match(/^\d+/)[0];
    // 检查是否已存在该前缀的键
    if (!acc[prefix]) {
        acc[prefix] = { person: [] };
    }
    // 将当前person加入对应数组
    acc[prefix].person.push(current.person);
    return acc;
}, {});

console.log(mergedResult);

代码说明

  • reduce方法:作为数组迭代工具,第一个参数是累加器函数(用来构建最终的合并对象),第二个参数是累加器的初始值(空对象{})。
  • 前缀提取:用正则/^\d+/匹配number属性开头的连续数字,比如"10a"会提取出"10"。如果你的前缀规则不是数字开头,可以调整正则表达式(比如前缀是字母则用/^[a-zA-Z]+/)。
  • 聚合逻辑:每次迭代时,先判断累加器中是否已有当前前缀的键,没有则初始化一个包含空person数组的对象;然后把当前对象的person值推入对应数组。

运行这段代码后,就能得到你想要的合并结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:31:45