如何使用多个OR语句基于对象的属性过滤数组

时间:2016-09-06 01:31:02

标签: arrays swift

这个问题很难说出来,但这是我的情况。我在一个名为monsters的数组中有几个Monster对象。每个怪物都有一个name属性,它是一个字符串。 我有一个名为monsterNames的第二个数组,它包含几个怪物名称(如字符串)。

我希望能够根据个别怪物对象的名称属性是否出现在monsters数组中来过滤monsterNames数组中的所有怪物对象。

到目前为止,我一直在寻找解决方案我只找到了基于单一条件进行过滤的解决方案,这使我只能根据monsterNames数组中的单个怪物名称进行过滤。任何人都可以帮我找到有效的解决方案吗?

1 个答案:

答案 0 :(得分:6)

您可以执行以下操作:

let monsters: [Monster] = ...

let monsterNames: [String] = ...

let filteredMonsters = monsters.filter { monsterNames.contains($0.name) }

这不能很好地执行,因为对于每个怪物,它会超过names阵列最多n次,但如果你的names阵列很小,则赢了不成问题。