【问题标题】:How do I filter an array based on object's property with multiple OR statements如何使用多个 OR 语句根据对象的属性过滤数组
【发布时间】:2016-09-06 01:31:02
【问题描述】:

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

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

到目前为止,我一直在寻找解决方案,我只找到了基于单个条件进行过滤的解决方案,这允许我仅基于 monsterNames 数组中的单个怪物名称进行过滤。谁能帮我找到一个有效的解决方案?

【问题讨论】:

    标签: arrays swift


    【解决方案1】:

    你可以这样做:

    let monsters: [Monster] = ...
    
    let monsterNames: [String] = ...
    
    let filteredMonsters = monsters.filter { monsterNames.contains($0.name) }
    

    这并没有表现得那么好,因为它会为每个怪物遍历names 数组最多n 次,但如果你的names 数组很小,这不会是一个问题。

    【讨论】:

    • 我认为 OP 正在尝试删除与任何 monsterName 匹配的那些,所以我认为他想要 monsters.filter {!monsterNames.contains($0.name) }
    猜你喜欢
    • 2021-04-15
    • 2018-12-25
    • 2018-07-06
    • 2021-03-20
    • 2021-04-21
    相关资源
    最近更新 更多