快速筛选对象数组和另一个对象数组

时间:2019-09-25 23:40:27

标签: arrays swift filter

我现在已经挣扎了几天,想办法用另一个对象数组对一个对象数组进行条件过滤。

缺少在此处正确抽象的功能...也许您有一些想法。

我有一个给定的对象数组A,但更复杂

value

我想申报所有与对象数组B匹配的结果

var ArrA = [{
 number: 1,
 name: "A"
}, {
 number: 2,
 name: "C"
}]

在最佳情况下,也可以直接将其与if条件一起移动....但是我无法处理...这是我现在所在的位置...这不起作用.... < / p>

var ArrB = [{
 id: 1,
 categorie: "wine"
}, {
 id: 3,
 categorie: "beer"
}, {
 id: 10,
 categorie: "juice"
}]

有没有一种精益的方法可以将数组中每个对象的一个​​属性与数组中每个对象的另一个属性进行比较?

1 个答案:

答案 0 :(得分:1)

让我们分解一下:您需要与 arrB id匹配的所有 arrA 对象,因此首先需要map您的 arrB < / strong>到ID列表(因为您不需要其他信息)

let arrBid = Set(arrB.map({ $0.id })) // [1, 3, 10]

如下所述,将其强制转换为Set可以为大型数组提供更好的结果,但不是强制性的

然后,您只需要通过将ID中包含的对象保留在 arrBid 中来过滤您的第一个 arrA

let arrAFilter = arrA.filter({ arrBid.contains($0.number) })

  

[((数字:1,名称:“ A”)]

和瞧