2016-09-06 61 views
0

這個問題很難說清楚,但這是我的情況。我在一個名爲monsters的數組中有幾個怪物對象。每個怪物都有一個name屬性,它是一個字符串。 我有第二個數組叫monsterNames,其中包含幾個怪物名稱(作爲字符串)。如何使用多個OR語句過濾基於對象屬性的數組

我希望能夠根據單個怪物對象的名稱屬性是否出現在monsterNames數組中,來過濾monsters數組中的所有怪物對象。

我一直在尋找解決方案,目前爲止,我只找到基於單個條件的過濾器,這使我只能基於monsterNames陣列中的單個怪物名稱進行過濾。任何人都可以幫我找到一個有效的解決方案嗎?

回答

5

你可以這樣做:

let monsters: [Monster] = ... 

let monsterNames: [String] = ... 

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

這不執行那麼好,因爲它會在names陣列高達n次,每次怪物,但如果你的names陣列小,這不會是一個問題。

+0

我認爲OP正在嘗試刪除與任何monsterName匹配的那些,所以我想他需要'monsters.filter {!monsterNames.contains($ 0.name)}' –

相關問題