2016-09-06 4 views
0

質問は言葉にするのが難しいですが、ここに私の状況です。私はmonstersという配列にいくつかのMonsterオブジェクトを持っています。各モンスターにはnameという文字列のプロパティがあります。 私はmonsterNamesと呼ばれる2番目の配列を持っています。これにはいくつかのモンスター名(Strings)が含まれています。複数のORステートメントでオブジェクトのプロパティに基づいて配列をフィルタリングする方法

個々のモンスターオブジェクトの名前プロパティがmonsterNames配列に表示されるかどうかに基づいて、monstersの配列内のすべてのモンスターオブジェクトをフィルタリングできるようにします。

これまで解決策を見てきましたが、私はただ一つの条件に基づいてフィルターをかけるソリューションしか見つけませんでした。monsterNamesアレイ内の単一のモンスター名に基づいてフィルタリングすることができます。誰も私にこれに効率的な解決策を見つけるのを助けることができますか?

答えて

5

あなたのような何かを行うことができます:

let monsters: [Monster] = ... 

let monsterNames: [String] = ... 

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

それは各モンスターのためにn回までnamesアレイの上に移動しますので、これは、十分にすべてのことを実行しませんが、あなたのnamesの配列が小さい場合に、これは問題ではありません。

+0

私は彼が 'monsters.filter {!monsterNames.contains($ 0.name)}'を望んでいると思うので、OPはどんなmonsterNameにもマッチするものを削除しようとしていると思います –

関連する問題