О каких элементах идёт речь:
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);