Ваш код имеет несколько проблем, которые приводят к ошибке "Cannot read properties of undefined". Давайте рассмотрим правильный способ добавления выбранных значений в двумерный массив, когда заранее неизвестно количество данных.
Ваша цель — создавать массив, состоящий из вложенных массивов, и добавлять в него значения по мере необходимости. Вот пример исправленного кода:
```javascript
var checkboxesChecked = []; // Инициализируем пустой двумерный массив
var currentRow = []; // Создаем временный массив для текущей строки
for (var index = 0; index < checkboxes.length; index++) {
if (checkboxes[index].checked) {
currentRow.push(checkboxes[index].value); // Добавляем значение в текущую строку
}
}
// После завершения цикла можно проверить, были ли добавлены значения в текущую строку
if (currentRow.length > 0) {
checkboxesChecked.push(currentRow); // Добавляем текущую строку в общий массив
}
// Теперь checkboxesChecked содержит выбранные значения
console.log(checkboxesChecked);
```
### Объяснения:
1. **Инициализация**: Мы начинаем с пустого `checkboxesChecked`, который будет основной коллекцией выбранных значений.
2. **Создание временной строки**: Мы используем отдельный массив `currentRow`, чтобы хранить все значения из одной строки, прежде чем добавить их в основной массив.
3. **Добавление значений**: Когда мы находим отмеченный чекбокс, мы добавляем его значение в `currentRow` с помощью метода `push()`.
4. **После цикла**: После завершения цикла, если `currentRow` содержит элементы, мы добавляем его в `checkboxesChecked`.
Этот подход позволяет добавлять произвольное количество выбранных значений без необходимости заранее задавать размеры массивов.