Как отфильтровать массив на основе свойства объекта с помощью нескольких операторов OR

arrays swift

2446 просмотра

1 ответ

Вопрос было трудно выразить словами, но вот моя ситуация. У меня есть несколько объектов Monster в массиве monsters. У каждого монстра есть nameсвойство String. У меня есть второй массив под названием monsterNames, который содержит несколько имен монстров (в виде строк).

Я хочу иметь возможность фильтровать все объекты монстров в monstersмассиве на основе того, появляется ли свойство имени отдельного объекта монстров в monsterNamesмассиве.

До сих пор я искал решения, я нашел только решения, которые фильтруют по одному условию, что позволяет фильтровать только по одному имени монстра в monsterNamesмассиве. Кто-нибудь может помочь мне найти эффективное решение этой проблемы?

Автор: Eman H Источник Размещён: 12.11.2019 09:53

Ответы (1)


6 плюса

Решение

Вы могли бы сделать что-то вроде:

let monsters: [Monster] = ...

let monsterNames: [String] = ...

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

Это не очень хорошо работает, так как он будет проходить по namesмассиву до nкаждого раза для каждого монстра, но если ваши namesмассивы малы, это не будет проблемой.

Автор: fdiaz Размещён: 06.09.2016 02:41
Вопросы из категории :
32x32