Показать сообщение отдельно
  #4 (permalink)  
Старый 14.04.2022, 09:46
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,705

Если у вас увеличивается только первый массив, а второй (с элементами) остается неизменным, то есть смысл попробовать составить карту innerText => [...(.top-item-row)] и работать с ней.

const elements = [...document.querySelectorAll('.visit-link, .target-link > a')];

const elementsMap = {};
let item;
while (item = elements.shift()) {
    elementsMap[item.innerText] ??= [];
    elementsMap[item.innerText].push(
        item.closest('.top-item-row')
    );
}

function removeRows(titles) {
    for (let i = 0; i < titles.length; i++) {
        const list = elementsMap[titles[i]];
        if (!list) {
            continue;
        }
        
        for (let j = 0; j < list.length; j++) {
            list[j].remove();
        }
        
        delete elementsMap[titles[i]];
    }
}

removeRows(['Заголовок1', 'Заголовок2']);
Ответить с цитированием