Задача

Сделайте строку поиска на нашем любимом веб-сайте с новыми фильмами - IMnotDB.com

Постановка задачи

Вы разработчик, который должен написать код для отображения результатов поиска, которые вы получили в формате JSON с вашего сервера.

В зависимости от того, что ввел пользователь, результаты поиска состоят из списков всех подходящих фильмов, телешоу и актеров.

Приведенный ниже JSON кажется приемлемым ответом на один оставшийся запрос со строкой поиска.

Я считаю, что он представляет данные удовлетворительно.

Рядом находится макет того, как я хочу, чтобы мои результаты отображались.

Решение

Если бы я писал декларативный код. Я могу просто определить, как будет выглядеть список результатов поиска для объекта (фильм, телешоу, актер и т. д.), и повторно использовать его.

Давайте попробуем написать преобразования данных для представления наших данных, а затем выдать представления.

Мне не нужны объекты, у которых нет результатов поиска. Поэтому мне придется отфильтровать эти сущности.

Теперь я хочу применить свое представление к каждому из этих объектов.

Мне не нравится приведенный выше код. Несмотря на то, что я правильно представил свои данные, я все равно должен

  • Выполните Object.Keys
  • Объявить и изменить переменную
  • Выполняйте повторные поиски HashMap.

Я выбрал структуру данных HashMap для представления своих данных, но я не использую никаких преимуществ HashMap, мне не нужен быстрый поиск на основе ключей, так как я выполняю свои операции со всеми ключами.

Я понял, что использование структуры данных, наиболее близкой к моему представлению данных, не всегда может быть лучшей идеей. Моя проблема здесь явно очень хорошо подходит для структуры данных типа коллекции, поскольку для каждого преобразования я повторяю и выполняю преобразование для каждого ключа HashMap.

Есть 2 способа решить эту проблему. Один из них - изменить мой объект ответа на что-то вроде этого

Это открывает еще одну банку червей, несколько минусов справа от летучей мыши -

  • Объекты разного типа
  • Он не представляет данные и его иерархию хорошо

Другое решение, о котором я могу подумать, — это использование структуры данных, более подходящей для моих операций, при сохранении моего представления данных.

В основном используйте коллекции с парами ключ-значение в качестве элементов коллекции.

Это делает применение преобразований более естественным.

Здесь мы просто применяем одно преобразование, удаляя объекты без каких-либо результатов, когда вам требуется больше преобразований, становится намного проще использовать набор пар ключ-значение над объектами Javascript.

TL;DR Подводя итог, я болтаю о том, что выбор структуры данных, наиболее близкой к представлению данных, не всегда может быть лучшим выбором. Но что более важно. Бобби Деол.