Подтвердить что ты не робот

Как преобразовать коллекцию в массив в javascript

Я пытаюсь понять, как преобразовать коллекцию javascript (то есть что-то возвращенное из getElementsByTagName/etc) в обычный массив, чтобы я мог выполнять функции массива данных.

Я ищу решение без, используя любые библиотеки, и не смог найти какие-либо элегантные решения в любом месте в Интернете. Кто-нибудь написал хорошую функцию использования для этой проблемы?

4b9b3361

Ответ 1

Вы можете сделать это:

var coll = document.getElementsByTagName('div');

var arr = Array.prototype.slice.call( coll, 0 );

EDIT: Как отметил @Chris Nielsen, это не удается в IE до 9. Лучше всего было бы провести некоторое тестирование функций и создать функцию, которая может обрабатывать либо, либо просто сделать цикл, как в (втором) решении, из @brilliand.

Ответ 2

В современном браузере вы можете использовать Array.from который "создает новый экземпляр Array из массива или повторяемого объекта"

Пример: преобразование HTML-коллекции в массив

const divs = document.getElementsByTagName('div');
const myArray = Array.from(divs); // [div, div, ...]

Ответ 3

Скопировать его в обычный массив?

var coll = document.getElementsByTagName('div');
var arr = [];
for(var i in coll) arr[i] = coll[i];

Прошло некоторое время с тех пор, как я использовал JavaScript... вам может понадобиться это:

var coll = document.getElementsByTagName('div');
var arr = [];
for(var i = 0; i < coll.length; i++) arr.push(coll[i]);