프로그래머스에서 행렬 테두리 회전하기 문제를 풀다가 숫자가 순차적으로 증가하는 2차원 배열을 만들어야했다.
let board = Array.from({length : N}, (_, index) => Array(M).fill(index+1));
처음엔 이렇게 만들었었는데,
[[1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2],
[3, 3, 3, 3, 3, 3],
[4, 4, 4, 4, 4, 4],
[5, 5, 5, 5, 5, 5],
[6, 6, 6, 6, 6, 6]]
이런식의 배열이 만들어졌다.
Array.fill메서드는 fill 안의 값들로 Array(N)만큼의 1차원 배열을 만들어주는것이고,
Array.from 메서드는 length 만큼의 배열을 만드는데, 콜백함수가 실행된다.
index가 처음에는 1, 그후 2 이렇게 순차적으로 증가하기때문에 원하는 배열이 나오지 않았던것이다.
let board = Array.from({ length: N }, (_, i) =>
Array.from({ length: M }, (_, j) => i * M + j + 1)
);
순차적인 값을 원할때는 Array.from 메서드를 이중으로 사용해서, 순차적으로 값을 늘려주어야한다.