巧妙合并数组,精准匹配数据:基于id的数组筛选与整合
本文探讨一个常见的数组数据处理难题:如何高效地合并两个数组,并根据特定字段(例如,id 和 cid)进行精准匹配和数据筛选,最终生成一个新的整合数组。 假设我们有两个数组,数组 A 包含 id 字段,数组 B 包含 cid 字段和其他相关数据。我们的目标是:当 A 数组的 id 与 B 数组的 cid 相匹配时,将 A 数组的 id 和 B 数组中对应的记录整合到新的数组中。
为了更清晰地理解,我们直接用代码示例进行说明:
假设数组 A 和 B 分别如下:
let a = [{id:1},{id:2}]; let b = [{cid:1, des:"1"},{cid:1, des:"11"},{cid:2, des:"2"}];
我们需要根据 id 和 cid 进行匹配,并生成一个新的数组。 目标数组的结构大致如下:
// 期望结果 (实际结果取决于代码实现,此处仅作示例) [ {id: 1, list: [{cid:1, des:"1"},{cid:1, des:"11"}]}, {id: 2, list: [{cid:2, des:"2"}]} ]
下面提供一种 JavaScript 代码实现方案:
let a = [{id:1},{id:2}]; let b = [{cid:1, des:"1"},{cid:1, des:"11"},{cid:2, des:"2"}]; let c = a.map(item => ({ ...item, list: b.filter(it => it.cid === item.id) }));
这段代码利用了 map 和 filter 方法。map 方法遍历数组 A 的每个元素,filter 方法则在数组 B 中筛选出与当前 id 匹配的元素。 map 方法将 A 数组的元素和筛选后的 B 数组元素组合成新的数组 C。 需要注意的是,匹配到的 B 数组元素被组织成一个数组,作为新数组元素的 list 属性。 这种方法简洁高效地实现了数组的合并和数据筛选。