Изначально не подумал вот и мучаешься. Надо было сразу строить массив правильно. Технически никакой разницы же нет.
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";
}