如何利用标识符通过两个数组生成第三个数组?
基于共同ID关联两个数组生成目标数组的解决方案
Excel 场景
动态数组版本(Excel 365/2021+)
直接用公式生成完整的目标数组,无需下拉填充:
=CHOOSECOLS(HSTACK(数组2[User], XLOOKUP(数组2[ID], 数组1[ID], 数组1[Account])), 1, 2)
如果需要处理ID不匹配的情况(避免#N/A错误),可以加IFERROR:
=CHOOSECOLS(HSTACK(数组2[User], IFERROR(XLOOKUP(数组2[ID], 数组1[ID], 数组1[Account]), "无匹配")), 1, 2)
旧版Excel(无动态数组)
在目标区域的第一个单元格分别输入以下公式,然后下拉填充:
- User列:
=数组2[@User] - Account列:
=INDEX(数组1[Account], MATCH(数组2[@ID], 数组1[ID], 0))
同样可以加IFERROR处理无匹配的情况:=IFERROR(INDEX(数组1[Account], MATCH(数组2[@ID], 数组1[ID], 0)), "无匹配")
编程场景(以JavaScript为例)
如果是在代码中处理数组,通过遍历+匹配实现关联:
// 示例输入数组 const arr1 = [ { ID: 1, Account: "acc001" }, { ID: 2, Account: "acc002" }, { ID: 3, Account: "acc003" } ]; const arr2 = [ { User: "Alice", ID: 1 }, { User: "Bob", ID: 3 }, { User: "Charlie", ID: 2 } ]; // 生成关联后的目标数组 const result = arr2.map(userEntry => { const matchedAccount = arr1.find(accEntry => accEntry.ID === userEntry.ID); return { User: userEntry.User, Account: matchedAccount ? matchedAccount.Account : "无匹配" }; });
内容的提问来源于stack exchange,提问作者Tello Martinez
相关产品推荐
相关产品推荐

