Я учу filter, почему не работает код?

let elems = document.querySelectorAll('.item')
let c = elems.filter(function(currentValue, index){
    return currentValue.hasAttribute('class')
});

alert(c)
<div class="item red"></div>
<div class="item green"></div>
<div class="item red"></div>
<div class="item blue"></div>
<div class="item red"></div>


Ответы (1 шт):

Автор решения: Grundy

.querySelectorAll возвращает не массив, а коллекцию. Поэтому у него просто нет этого метода.

Для того, чтобы он появился, нужно получить массив на основе этой коллекции, например используя метод Array.from

let elems = Array.from(document.querySelectorAll('.item'));
let c = elems.filter(function(currentValue, index){
    return currentValue.hasAttribute('class');
 });

console.log(c);
<div class="item red"></div>
<div class="item green"></div>
<div class="item red"></div>
<div class="item blue"></div>
<div class="item red"></div>

→ Ссылка