我现在已经挣扎了几天,想办法用另一个对象数组对一个对象数组进行条件过滤。
缺少在此处正确抽象的功能...也许您有一些想法。
我有一个给定的对象数组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"
}]
有没有一种精益的方法可以将数组中每个对象的一个属性与数组中每个对象的另一个属性进行比较?
答案 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”)]
和瞧