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

如何在JavaScript中基于索引或ID合并两个嵌套数组

解决JavaScript嵌套数组合并问题

方法一:基于索引合并(假设数组顺序完全对应)

如果两个数组的元素顺序一一匹配(即array1第n项与array2第n项属于同一ID),可以直接用map遍历拼接:

const array1 = [[401, "John", "married"], [402, "Poul", "unmarried"]];
const array2 = [[401, 9654251, "john401@gmail.com"], [402, 9623427, "poul402@gmail.com"]];

// 用扩展运算符拼接对应索引的数组,slice(1)去除重复的ID
const mergedByIndex = array1.map((item, index) => [...item, ...array2[index].slice(1)]);
console.log(mergedByIndex);

方法二:基于共同ID合并(不依赖数组顺序)

如果数组元素顺序可能不一致,先将其中一个数组转为以ID为键的映射,再遍历合并:

const array1 = [[401, "John", "married"], [402, "Poul", "unmarried"]];
const array2 = [[401, 9654251, "john401@gmail.com"], [402, 9623427, "poul402@gmail.com"]];

// 将array2转为ID映射,键为ID,值为去除ID后的剩余元素
const array2Map = new Map(array2.map(item => [item[0], item.slice(1)]));

// 遍历array1,根据ID匹配并拼接元素
const mergedById = array1.map(item => [...item, ...(array2Map.get(item[0]) || [])]);
console.log(mergedById);

注:|| []用于处理ID不匹配的情况,避免报错,此时仅保留array1原元素。

最终结果

两种方法都会输出目标数组:

[[401, "John", "married", 9654251, "john401@gmail.com"], [402, "Poul", "unmarried", 9623427, "poul402@gmail.com"]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:35:18