Вы можете использовать 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);