gpt4 book ai didi

ios - 过滤元素

转载 作者:行者123 更新时间:2023-11-28 12:21:57 26 4
gpt4 key购买 nike

比方说,我在过滤元素数组时遇到问题。

Box
-[Zombies]
-[Players]
-[Weapons]

我有一堆盒子,可以包含上面列出的所有数组。

[Box]

现在我想过滤掉包含我想要过滤掉的内容的框。如果我选择一个特定的 zombieId + playerId,我只会得到那些盒子等等。

我尝试使用类似的东西:

let filteredBoxes = boxes.filter { (box) -> Bool in

selectedZombies.contains(where: { $0.zombieId == box.zombies.zombieId })
&&
selectedPlayers.contains(where: { $0.playerId == box.players.playerId })
&&
selectedWeapons.contains(where: { $0.weaponId == box.weapons.weaponId })
}

这可行,但要求用户在显示任何内容之前选择所有 3 个过滤器。

我还想显示与用户选择相匹配的框,即使他们只选择了一些过滤器,即选定的僵尸。

最佳答案

如果你想过滤特定的条件,你可以像这样,声明3个Bool类型的实例属性来控制用户当前允许哪个过滤器,并与filter一起使用>.

var filterZombie = true
var filterPlayer = true
var filterWeapon = false
//So now filterZombie and filterPlayer is true you want to filter only these two condition so make filter like this
let filterArray = boxes.filter { (box) -> Bool in
let zombieResult = filterZombie ? selectedZombies.contains(where: { $0.zombieId == box.zombies.zombieId }) : true //Set default result as true
let playerResult = filterPlayer ? selectedPlayers.contains(where: { $0.playerId == box.players.playerId }) : true //Set default result as true
let weaponResult = filterWeapon ? selectedWeapons.contains(where: { $0.weaponId == box.weapons.weaponId }) : true //Set default result as true
return zombieResult && playerResult && weaponResult
}

关于ios - 过滤元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44519216/

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