Доступ к определенной точке двумерного массива некоректный
В общем, проблема заключается в следующем:
Создаю массив с помощью функции gen() Добавляю в массив точку(предположительно с координатами 1;3) с помощью функции addPoint(1,3) И потом вывожу на экран массив с помощью функции vis(); Получается что-то вроде XXXXXXX XXXOXXX XXXXXXX XXXXXXX XXXXXXX А хотелось бы XXXXXXX XXXXXXX XXXXXXX XOXXXXX XXXXXXX Как в массиве array[x][y] поменять местами x и y? Кроме как привыкнуть называть их по-другому.
function gen() {
for(i=0; i < xLength; i++){
array[i] = [];
for(j=0; j < yLength; j++){
array[i][j] = "X";
}
}
}
function vis() {
for(i = 0; i < xLength; i++) {
for(j = 0; j < yLength; j++) {
arrayM = arrayM +array[i][j];
}
arrayM = arrayM + "<br>";
}
}
function addPoint(x,y){
array[x][y] = "O";
}
|
У тебя в коде логика такая, что x - это индекс строки, а не колонки, как ты хочешь.
Обычно i - это строка, j - это колонка. x - это колонка(горизонтальная ось), j - Это строка(вертикальная ось). А у тя все поперепутано. |
Тогда надо ковырять функцию gen()? Нет какой-нибудь замечательной приблуды, что "перевернет" массив?
|
Цитата:
Поменяй местами xLength и yLength И пиши array[y][x] в addPoint |
danik.js, но в полной версии у меня еще есть куча функций связанных с конкретной точкой в массиве. Это только как пример. Я пока мирился с этим и писал всегда [y][x]. Но теперь нету больше сил. Всегда начинают течь из ушей мозги, когда дело доходит до написания каких-то точек. И фиг перепривыкнешь, ведь все годы обучения писал (x;y). И как перестроить массив я тоже понять не могу.
|
Транспонируй при выводе. Итерируй y, x вместо x, y
|
Изначально не подумал вот и мучаешься. Надо было сразу строить массив правильно. Технически никакой разницы же нет.
function gen() {
for(i=0; i < yLength; i++){
array[i] = [];
for(j=0; j < xLength; j++){
array[i][j] = "X";
}
}
}
function vis() {
for(i = 0; i < xLength; i++) {
for(j = 0; j < yLength; j++) {
arrayM = arrayM +array[j][i];
}
arrayM = arrayM + "<br>";
}
}
function addPoint(x,y){
array[x][y] = "O";
}
|
| Часовой пояс GMT +3, время: 18:13. |