这个问题很难说出来,但这是我的情况。我在一个名为monsters
的数组中有几个Monster对象。每个怪物都有一个name
属性,它是一个字符串。
我有一个名为monsterNames
的第二个数组,它包含几个怪物名称(如字符串)。
我希望能够根据个别怪物对象的名称属性是否出现在monsters
数组中来过滤monsterNames
数组中的所有怪物对象。
到目前为止,我一直在寻找解决方案我只找到了基于单一条件进行过滤的解决方案,这使我只能根据monsterNames
数组中的单个怪物名称进行过滤。任何人都可以帮我找到有效的解决方案吗?
答案 0 :(得分:6)
您可以执行以下操作:
let monsters: [Monster] = ...
let monsterNames: [String] = ...
let filteredMonsters = monsters.filter { monsterNames.contains($0.name) }
这不能很好地执行,因为对于每个怪物,它会超过names
阵列最多n
次,但如果你的names
阵列很小,则赢了不成问题。