Задача
Сделайте строку поиска на нашем любимом веб-сайте с новыми фильмами - IMnotDB.com
Постановка задачи
Вы разработчик, который должен написать код для отображения результатов поиска, которые вы получили в формате JSON с вашего сервера.
В зависимости от того, что ввел пользователь, результаты поиска состоят из списков всех подходящих фильмов, телешоу и актеров.
Приведенный ниже JSON кажется приемлемым ответом на один оставшийся запрос со строкой поиска.
Я считаю, что он представляет данные удовлетворительно.
Рядом находится макет того, как я хочу, чтобы мои результаты отображались.
Решение
Если бы я писал декларативный код. Я могу просто определить, как будет выглядеть список результатов поиска для объекта (фильм, телешоу, актер и т. д.), и повторно использовать его.
Давайте попробуем написать преобразования данных для представления наших данных, а затем выдать представления.
Мне не нужны объекты, у которых нет результатов поиска. Поэтому мне придется отфильтровать эти сущности.
Теперь я хочу применить свое представление к каждому из этих объектов.
Мне не нравится приведенный выше код. Несмотря на то, что я правильно представил свои данные, я все равно должен
- Выполните Object.Keys
- Объявить и изменить переменную
- Выполняйте повторные поиски HashMap.
Я выбрал структуру данных HashMap для представления своих данных, но я не использую никаких преимуществ HashMap, мне не нужен быстрый поиск на основе ключей, так как я выполняю свои операции со всеми ключами.
Я понял, что использование структуры данных, наиболее близкой к моему представлению данных, не всегда может быть лучшей идеей. Моя проблема здесь явно очень хорошо подходит для структуры данных типа коллекции, поскольку для каждого преобразования я повторяю и выполняю преобразование для каждого ключа HashMap.
Есть 2 способа решить эту проблему. Один из них - изменить мой объект ответа на что-то вроде этого
Это открывает еще одну банку червей, несколько минусов справа от летучей мыши -
- Объекты разного типа
- Он не представляет данные и его иерархию хорошо
Другое решение, о котором я могу подумать, — это использование структуры данных, более подходящей для моих операций, при сохранении моего представления данных.
В основном используйте коллекции с парами ключ-значение в качестве элементов коллекции.
Это делает применение преобразований более естественным.
Здесь мы просто применяем одно преобразование, удаляя объекты без каких-либо результатов, когда вам требуется больше преобразований, становится намного проще использовать набор пар ключ-значение над объектами Javascript.
TL;DR Подводя итог, я болтаю о том, что выбор структуры данных, наиболее близкой к представлению данных, не всегда может быть лучшим выбором. Но что более важно. Бобби Деол.