如何合并数组中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
相关产品推荐
相关产品推荐

