gpt4 book ai didi

arrays - Swift 过滤对象数组与另一个对象数组

转载 作者:行者123 更新时间:2023-11-28 13:27:36 24 4
gpt4 key购买 nike

我已经好几天都在努力寻找一种方法来对一个对象数组和另一个对象数组进行条件过滤。

此处缺乏适当抽象的能力……也许您有一些想法。

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

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

我想归档所有匹配对象数组 B 的 id 的结果

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

在最好的情况下,直接将其与 if 条件一起移动....但我无法处理它...这就是我现在的位置...这是行不通的....

let newArray = ArrA.filter{$0.number == ArrB.... }.
if (newArray.count != 0){
// Do something
}

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

最佳答案

让我们分解一下:您需要所有匹配 arrB id 的 arrA 对象,所以首先您需要映射您的 arrB 到 id 列表(因为你不需要其他信息)

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

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

然后你只需要过滤你的第一个 arrA 只保留包含 id 的对象到 arrBid :

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

[(number: 1, name: "A")]

瞧瞧

关于arrays - Swift 过滤对象数组与另一个对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58107805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com