Вы можете использовать Array.from
для преобразования коллекции в массив, который чище, чем Array.prototype.forEach.call
:
Array.from(document.getElementsByClassName("myclass")).forEach(
function(element, index, array) {
// do stuff
}
);
В старых браузерах, которые не поддерживают Array.from
, вам нужно использовать что-то вроде Babel.
ES6 также добавляет этот синтаксис:
[...document.getElementsByClassName("myclass")].forEach(
(element, index, array) => {
// do stuff
}
);
Остальная деструктуризация ...
работает со всеми объектами, похожими на массивы, а не только с самими массивами, тогда для создания массива из значений используется старый добрый синтаксис массива.
В то время как альтернативная функция querySelectorAll
(которая делает getElementsByClassName
устаревшей) возвращает коллекцию, которая forEach
изначально имеет , другие методы, такие как map
или filter
отсутствуют, поэтому этот синтаксис все еще полезен:
[...document.querySelectorAll(".myclass")].map(
(element, index, array) => {
// do stuff
}
);
[...document.querySelectorAll(".myclass")].map(element => element.innerHTML);
[].forEach.call(elsArray, function () {...})
.