JavaScript

Как заполнить двумерный массив в JS.

идет смещение на один по индексу право, помогите исправить, что бы в массиве 1ая строка была [1,1,1,1] соответствовала игровому полю короче.
атрибут position создается в цикле при верстке и присваивается каждой клетке.
matrix = квадратная матрица размера size(которое выбрал пользователь в промте)
код что скинул срабатывает при клике на ячейку.

       const cellIndex = parseInt(this.getAttribute("position")); 
const row = Math.floor(cellIndex / size) - 1;
const col = cellIndex % size;
matrix[row][col] = 1;
console.log(matrix, row, col);
Полагаю, в position у тебя значения от 1 до 16? В этом случае надо отнимать единицу ДО начала вычисления позиции.
 const cellIndex = this.getAttribute("position") - 1;
const col = cellIndex % size;
const row = (cellIndex - col) / size;
matrix[row][col] = 1;
console.log(matrix, row, col);
Зачем хранить в атрибутах номер ячейки, когда можно хранить оба индекса в готовом виде?
Альберт Туркин
Альберт Туркин
67 430
Лучший ответ
Дмитрий Кузьмин да, у меня были от 1 до size ** 2, сделал с 0 все ОК,а как сделать это " можно хранить оба индекса в готовом виде"
[1,1,1,1] - и в массиве сделать нельзя т к нумерация начинается с нуля
можно создать примерно такой объект
{"1":1,"2":1,"3":1,"4":1}
Для заполнения двумерного массива в JavaScript можно использовать циклы. Например, чтобы заполнить массив нулями, можно использовать следующий код:
 const size = 4; // размер массива 
const matrix = []; // создание пустого массива

// заполнение массива нулями
for (let i = 0; i < size; i++) {
matrix[i] = []; // создание вложенных массивов
for (let j = 0; j < size; j++) {
matrix[i][j] = 0; // заполнение ячеек нулями
}
}
Чтобы заполнить массив другими значениями, нужно изменить значение внутри вложенного цикла. Например, чтобы заполнить массив единицами, можно заменить matrix[i][j] = 0 на matrix[i][j] = 1.
Чтобы исправить смещение на один по индексу вправо, нужно изменить формулу расчета строки и столбца. Например, чтобы первая строка массива была [1][1][1][1], можно использовать следующий код:
 const cellIndex = parseInt(this.getAttribute("position"));  
const row = Math.floor(cellIndex / size);
const col = cellIndex % size - 1;
matrix[row][col] = 1;
console.log(matrix, row, col)
Здесь мы убрали вычитание единицы из строки и добавили его к столбцу, чтобы первый элемент массива был на позиции 0.
**
***баха*** ****
14 273
Дмитрий Кузьмин спасибо,но если мне понадобится ответ компьютерного робота, я сам ему смогу написать, а фармящим клоунам которые на автомате присылают ответы от ии, даже не проверяя их на работоспособность диз.
***баха*** **** я не робот а живой человек программирую на python c 1991 Года