#javascript #arrays #for-loop #matrix
Вопрос:
Я пытаюсь создать 2D-массив, но я не знаю его размера, когда объявляю его. когда я пытаюсь добавить в него какое-то значение вне цикла, проблем не возникает, независимо от того, сколько значений я добавляю. Но когда я пытаюсь сделать то же самое внутри цикла for, я не получаю того же результата, у меня в массиве есть несколько пустых мест. Я не понимаю разницы между тем, что я делаю внутри и вне цикла
let Vs = []
let Ts = []
Ts[0] = []
Ts[0][0] = ' test'
Ts[0][1] = ' test1'
Ts[1] = []
Ts[1][0] = ' test2'
Ts[1][1] = ' test3'
Ts[2] = []
Ts[2][0] = ' test4'
Ts[2][1] = ' test5'
console.error('TS : ' Ts)
for (let i = 0; i < 3; i ) {
const V = i;
Vs[i] = []
Vs[i][i] = V
let y = i 1
Vs[i][y] = V
console.error(Vs)
}
Комментарии:
1. Не могли бы вы уточнить, что вы подразумеваете под добавлением значений ? Как в расширении размера матрицы ?
2. Вне цикла , который вы всегда назначаете
[i]
,[i][0]
и[i][1]
. Внутри цикла , который вы назначаете[i]
,[i][i]
и[i][i 1]
. (Голосование за закрытие, поскольку этот простой вопрос подсчета голосов находится на уровне опечатки).3. Вот и все ! Большое спасибо ^^
Ответ №1:
Я думаю, что вы немного заблудились в своих заданиях в цикле. Может быть, следующее-это больше то, что вы ищете?
let Vs = [], pre='test';
let Ts = [];
Ts[0] = []
Ts[0][0] = ' test'
Ts[0][1] = ' test1'
Ts[1] = []
Ts[1][0] = ' test2'
Ts[1][1] = ' test3'
Ts[2] = []
Ts[2][0] = ' test4'
Ts[2][1] = ' test5'
console.log('TS:', Ts)
for (let i = 0; i < 3; i ) {
const V = 2*i;
Vs[i] = []
Vs[i][0] = pre V
Vs[i][1] = pre (V 1)
}
console.log(Vs)
Ответ №2:
Хорошо, после просмотра вашего кода, вот почему вы получаете пустые места,
В блоке кода
for (let i = 0; i < 3; i ) {
const V = i;
Vs[i] = []
Vs[i][i] = V
let y = i 1
Vs[i][y] = V
console.error(Vs)
}
Вы делаете следующее :
Vs[i] = []
создает новую строку в вашей матрице,
А затем вы вставляете значение V в столбец i этой новой строки, что означает, что вы получите пустые места в зависимости от значения i, если i не равно 0, первые индексы этой строки будут пустыми !
Затем вы вставляете значение на одну позицию позже в Vs[i][y], но на следующей итерации вы переходите к новой строке и увеличиваете i, оставляя больше пустых мест в каждой строке…