È possibile utilizzare Array.from
per convertire la raccolta in array, che è molto più pulito di Array.prototype.forEach.call
:
Array.from(document.getElementsByClassName("myclass")).forEach(
function(element, index, array) {
// do stuff
}
);
Nei browser più vecchi che non supportano Array.from
, devi usare qualcosa come Babel.
ES6 aggiunge anche questa sintassi:
[...document.getElementsByClassName("myclass")].forEach(
(element, index, array) => {
// do stuff
}
);
Resta distruttivo con le ...
opere su tutti gli oggetti simili a array, non solo gli array stessi, ma una buona vecchia sintassi dell'array viene utilizzata per costruire un array dai valori.
Mentre la funzione alternativa querySelectorAll
(che in qualche modo rende getElementsByClassName
obsoleta) restituisce una raccolta che ha forEach
nativamente, altri metodi come map
o filter
mancano, quindi questa sintassi è ancora utile:
[...document.querySelectorAll(".myclass")].map(
(element, index, array) => {
// do stuff
}
);
[...document.querySelectorAll(".myclass")].map(element => element.innerHTML);
[].forEach.call(elsArray, function () {...})
.