@electronikprm

Как сделать сравнение в таблице по собственным атрибутам?

Всем привет, вопрос наверное простой, но если знать js )
Есть таблица, у контейнеров 3 собственных атрибута
data-city
data-brand
data-prem


Мне нужно делать проверку и помечать их классом, если data-prem="1" то class="true", а если data-prem="0", то сравнивать его со всеми контейнерами у которых data-prem="1". Если совпадают параметры data-city и data-brand (оба) с контейнером у которого data-prem="1" то помечать их class="false", вот пример как должно это выглядеть по итогу:

<tr data-city="Москва" data-brand="Brand1" data-prem="1"  class="true"></tr>
<tr data-city="Москва" data-brand="Brand2" data-prem="0"  class="false"></tr>
<tr data-city="Екатеринбург" data-brand="Brand1" data-prem="0" ></tr>
<tr data-city="Москва" data-brand="Brand1" data-prem="0"  class="false" ></tr>
<tr data-city="Казань" data-brand="Brand1" data-prem="0" ></tr>
<tr data-city="Москва" data-brand="Brand5" data-prem="0" ></tr>
<tr data-city="Москва" data-brand="Brand1" data-prem="0"  class="false" ></tr>
<tr data-city="Москва" data-brand="Brand2" data-prem="1"  class="true" ></tr>


Пытался делать на php, но проблема в том, что цикл идет сверху вниз, и если значение data-prem="1" находится ниже проверяемого, то все формируется уже неправильно.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Первый раз обойти все и составить массив ключей "city:brand" где prem === "1"
Второй раз пройти и расставить классы.
Для prem === "0" делать ключ "city:brand" и смотреть, есть ли такой же в массиве из п.1

codePen


p.s. делать ключ просто склеив через, скажем, двоеточие, строки city и brand — может, не лучшее решение, т.к. в строке города или бренда может встретиться своё двоеточие. Наверняка можно и получше решить этот момент, но для этого примера «и так сойдёт» )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы