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

JavaScript中如何从数组a和b得到数组c?根据名称获取对应ID

根据名称数组获取对应ID数组的几种解法

嘿,这需求很典型,我给你分享两种在JavaScript里常用的实现思路,都能轻松从数组a和b得到目标数组c:

方法一:用filter() + map()组合实现

这种方法逻辑直观,适合数据量不大的场景:

const a = [{id:1, name:'a'}, {id:2, name:'b'}, {id:3, name:'c'}, {id:4, name:'d'}, {id:5, name:'e'}];
const b = ['a','d'];

const c = a.filter(item => b.includes(item.name)).map(item => item.id);
console.log(c); // 输出: [1, 4]
  • 逻辑说明:
    • 先用filter()筛选出数组a中name存在于数组b的元素
    • 再用map()把筛选后的元素的id提取出来,组成最终的数组c

方法二:先构建映射表,再快速查找(性能更优)

如果数组a的元素数量很多,推荐用这种方法,因为它的时间复杂度更低:

const a = [{id:1, name:'a'}, {id:2, name:'b'}, {id:3, name:'c'}, {id:4, name:'d'}, {id:5, name:'e'}];
const b = ['a','d'];

// 第一步:构建name到id的映射对象
const nameIdMap = {};
a.forEach(item => {
  nameIdMap[item.name] = item.id;
});

// 第二步:遍历b数组,直接从映射表中取对应的id
const c = b.map(name => nameIdMap[name]);
console.log(c); // 输出: [1, 4]
  • 逻辑说明:
    • 先遍历一次数组a,把每个元素的name作为键、id作为值存入对象,相当于建立一个快速查找的字典
    • 之后遍历数组b,直接通过键取值,避免了重复遍历数组a,性能提升明显

额外小提示

如果数组b中存在数组a里没有的名称,上面的方法会返回undefined,你可以根据需求处理这种情况,比如返回默认值:

// 不存在的名称返回null(或其他你需要的默认值)
const c = b.map(name => nameIdMap[name] ?? null);

内容的提问来源于stack exchange,提问作者蒋建雨

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:18:13