Я делаю webapp, который будет искать карты по заданным параметрам.Искать с Javascript a JSON, используя параметры формы
Проблема заключается в том, что карты имеют разные типы. Например, одна карта может иметь что-то вроде "income": 4
, а другая ведет себя совершенно по-другому и имеет атрибут "cost" : 5
. Все, что я имел в виду, это то, что у моего JSON есть 5 типов разных объектов, хотя они имеют много общего, они имеют определенные отличия.
Итак, предположим, что мой пользователь ищет карту на основе Title. Все они имеют этот атрибут, поэтому довольно легко сделать такое условие.
if ((item.name.toLowerCase().indexOf(cardParams.searchTitle.toLowerCase()) > -1) && (cardParams.searchTitle != null) && (cardParams
.searchTitle.length > 0)){
Но что, если мой пользователь хочет также искать текст в теле? У всех из них есть тоже, поэтому это приводит к другому состоянию с запуском, что делает вещи неудобными.
Кроме того, давайте укажем, как мой пользователь запускает мой сценарий с наименьшим сценарием и запрашивает два атрибута, которые у них нет одновременно, а также те, что указаны выше. Можно сказать, что я должен работать над своей формой, чтобы сделать их взаимоисключающими, но программно это выходит за рамки меня.
Что я решил пойти, это искать каждый атрибут отдельно и сохранять результаты в массиве. Если у меня столько дубликатов карты, сколько допустимых атрибутов (не пустых или пустых), я бы сохранил их.
Это действительно неуклюжий и не оптимальный. Я уверен, что есть очень простые решения, о которых я не могу думать.
Как я могу приступить к такой проблеме? Создает тонны условий единственный способ пойти? Что мне делать?
Редактировать: Спасибо за downvotes. Это все равно, что я прошу веселиться.
Вы просто хотите получить ответ легко найти все атрибуты (или, вернее, свойств) ' item' object? – Icepickle
"поиск json"? как в 'somejsontext.indexof()'. Или выполнить поиск через некоторую структуру данных JS, которая раньше была json-строкой? –
@MarcB Это в формате JSON, я получил его от API. Не понимаю, что вы имеете в виду. – Rentonie