这个问题难以言辞,但这是我的情况.我在一个名为的数组中有几个Monster对象monsters.每个怪物都有name一个String属性.我有一个名为的第二个数组monsterNames,它包含几个怪物名称(如Strings).
我希望能够monsters根据单个怪物对象的名称属性是否出现在monsterNames数组中来过滤数组中的所有怪物对象.
到目前为止,我一直在寻找解决方案,我只找到了基于单一条件进行过滤的解决方案,这使我只能根据monsterNames数组中的单个怪物名称进行过滤.任何人都可以帮我找到有效的解决方案吗?
你可以这样做:
let monsters: [Monster] = ...
let monsterNames: [String] = ...
let filteredMonsters = monsters.filter { monsterNames.contains($0.name) }
Run Code Online (Sandbox Code Playgroud)
这样做并不是那么好,因为对于每个怪物来说它会越过names阵列n,但是如果你的names阵列很小,这不会有问题.