通过对比数组ID生成结果数组及独立名称数组
按ID匹配数组元素并提取指定字段
先给出原始的两个数组:
let arr1 = [ {id:1, name:'hhj'}, {id:12, name:'ghdgj'}, {id:5, name:'gd'} ] let arr2 = [ {id:1, addr:'fsfhg'}, {id:8, addr:'rgdh'}, {id:5, name:'gd'} ]
步骤1:生成按ID匹配的结果数组resultarr
先把arr2里的所有ID提取到Set集合中(提升后续查找效率),再用filter筛选arr1中ID存在于该集合的元素:
// 提取arr2的ID集合 const arr2Ids = new Set(arr2.map(item => item.id)); // 筛选arr1中ID匹配的元素 const resultarr = arr1.filter(item => arr2Ids.has(item.id));
执行后resultarr的结果如下:
[{id:1, name:'hhj'}, {id:5, name:'gd'}]
步骤2:提取resultarr中的name字段生成names数组
用map遍历resultarr,直接取出每个元素的name属性即可:
const names = resultarr.map(item => item.name);
最终names数组为:['hhj', 'gd']
内容的提问来源于stack exchange,提问作者Lex V
相关产品推荐
相关产品推荐

