@angen89

Почему не получается отфильтровать массив строк?

Есть код:

let input = document.querySelector('#input');
let tbody = document.querySelector( 'tbody' );
let p = tbody.querySelectorAll( 'p' );
let list = [];
for (const key in p) {
    list.push( p[key].textContent );
}

input.addEventListener('input', function() {
    let matches = list.filter((i)=>i.startsWith(input.value));
   console.log(matches)
   })

В результате которого создается массив строк. Мне нужно его фильтровать, но функция выдаёт ошибку:

TypeError: Cannot read properties of undefined (reading 'startsWith')

Сам массив в порядке, отвечает спокойно на все встроенные функции, за исключением этой.
Отдельно функцию filter также проверяли на других массивах - порядок.
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
Предлагаю сделать следующее:

  • Прочитать сообщение об ошибке и попытаться осознать, что в нём сказано
  • Посмотреть, какие значения принимает key при переборе p
  • Открыть документацию и разобраться, что делает цикл for ... in
  • Погуглить, какие ещё бывают способы перебора
Ответ написан
Комментировать
@drawnofmymind
i - не строка? мб i.toString()
Ответ написан
Ваш ответ на вопрос

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

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