Задать вопрос
@anton99zel
29а класс средней школы №7

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

несколько раз на странице
<div class="buy">
<i><?=$NAME;?></i>
</div>

как оставить только дивы с уникальным $NAME, а остальные скрыть
?
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
О каких элементах идёт речь:

const elements = document.querySelectorAll('.buy');

Как добраться до текста внутри элемента:

const getText = el => el.querySelector(':scope > i').textContent;

// или

const getText = el => el.children[0].innerText;

Скрываем дубликаты:

[...elements].forEach((n, i, a) => {
  n.style.display = n === a.find(m => getText(m) === getText(n))
    ? 'block'
    : 'none';
});

или

const grouped = Array
  .from(elements, n => [ n, getText(n) ])
  .reduce((acc, n) => ((acc[n[1]] = acc[n[1]] || []).push(n[0]), acc), {});

Object.values(grouped).forEach(n => n.forEach((m, i) => m.hidden = !!i));

или

.hidden {
  display: none;
}

elements.forEach(function(n) {
  const t = getText(n);
  n.classList.toggle('hidden', this.has(t) || !this.add(t));
}, new Set);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы