Попытка получить матричную сборку с объектами - PullRequest
0 голосов
/ 26 сентября 2018

gSize исходит от пользователя (4/6/8)

Я бы хотел сделать его матричным, но я получаю массив из 16 строк - почему?

мойкод

function createBoard(gSize) {

  var board = [];
  for (var i = 0; i < gSize; i++) {
    // board.push([])
    for (var j = 0; j < gSize; j++) {
      // board[i][j] = empty
      board.push({
        posi: i,
        posj: j,
        minesAroundCount: 4,
        isShown: true,
        isMine: false,
        isMarked: true,
      })
    }
  }

  return board
}

console.log(
  createBoard(4)
);

1 Ответ

0 голосов
/ 26 сентября 2018

Вам нужно добавить внутренние массивы, чтобы получить матрицу, а затем нажать на внутренние массивы.

function createBoard(gSize) {
  var board = [];
  for (var i = 0; i < gSize; i++) {
    board[i] = [];                    // create nested array
    for (var j = 0; j < gSize; j++) {
      board[i].push({                 // push to the inner array
        posi: i,
        posj: j,
        minesAroundCount: 4,
        isShown: true,
        isMine: false,
        isMarked: true,
      })
    }
  }
  return board;
}

ES6 с разбросом по объектам

function createBoard(length) {
    const defaults = { minesAroundCount: 4, isShown: true, isMine: false, isMarked: true };
    return Array.from(
        { length },
        (_, posi) => Array.from(
            { length },
            (_, posj) => ({ posi, posj, ...defaults })
        )
    );
}
...