标签导航:

如何高效合并两个数组并根据ID字段匹配筛选数据?

巧妙合并数组,精准匹配数据:基于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 属性。 这种方法简洁高效地实现了数组的合并和数据筛选。