Хочу создать многомерный массив, заполненный значения двух атрибутов, чтобы вышло что-то вроде:
"marks": [
[2,1],
[1,2]
]
Но выпадает ошибка
TypeError: Cannot set property '0' of undefined
Код следующий, ошибка в данном случае в районе marks[i] =:
var marks;
var cols2 = document.querySelectorAll('.speech_gap');
cols2.forEach(function (speech, i) {
marks[i] = [speech.getAttribute("emotion"), speech.getAttribute("who")];
});
Что не так?
В данном случае не инициализирована переменная marks. Ее значение по умолчанию - undefined.
Поэтому при вызове marks[i] происходит ошибка. Для решения, достаточно инициализировать данную переменную массивом
var marks = [];
Кроме того, раз уж на основе одной коллекции нужно составить другую, лучше использовать метод map, который специально для этого предназначен
var cols2 = document.querySelectorAll('.speech_gap');
var marks = Array.from(cols2).map(function (speech, i) {
return [speech.getAttribute("emotion"), speech.getAttribute("who")];
});
Array.from используется для того, чтобы получить из коллекции col2 массив, у которого есть метод map.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости