[JavaScript] ํ ์ด๋ ์ดํดํ๋ 2์ฐจ์ ๋ฐฐ์ด
2์ฐจ์ ๋ฐฐ์ด in JavaScirpt
์๋ฐ์คํฌ๋ฆฝํธ ์์ฒด์๋ 2์ฐจ์ ๋ฐฐ์ด์ด ์๋ค.
๋ฐ๋ผ์ const arr = [][] ์ฒ๋ผ ํ ๋ฒ์ 2์ฐจ์ ๋ฐฐ์ด์ ์ ์ธํ ์ ์๋ค.
ํ์ง๋ง, ํ ํฌ๋์ ์ด์ฉํด 2์ฐจ์ ๋ฐฐ์ด๊ณผ ๋น์ทํ ๋ฐฐ์ด์ ๋ง๋ค ์ ์๋ค.
1๏ธโฃ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋น 2์ฐจ์ ๋ฐฐ์ด ์์ฑ
const board = new Array(n);
for(let i=0; i < n; i++){
board[i] = new Array(n);
}
2๏ธโฃ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ง์ ๊ฐ์ ํ ๋นํด ๋ฐฐ์ด ์์ฑ
board = [];
for(let i=0; i < n; i++){
board[i] = []
for(let j=0; j < n; j++){
board[i][j] = '.';
}
}
3๏ธโฃ Array.from() ๋ฉ์๋๋ฅผ ์ด์ฉํด 2์ฐจ์ ๋ฐฐ์ด ์์ฑ (ES6+)
// arr[4][4] ๋น ๋ฐฐ์ด ์์ฑ
const arr = Array.from(Array(4), () => new Array(4))
// arr[4][2]์ 0์ผ๋ก ์ด๊ธฐํํ ๋ฐฐ์ด ์์ฑ
const arr = Array.from(Array(4), () => new Array(2).fill(0)
Array.from() ์ฐธ๊ณ
Array.from() ๋ฉ์๋๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด(array-like object)๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด(iteralbe object)๋ฅผ
shallow copye(์์ ๋ณต์ฌ)ํด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ค๋ค.
์ฒซ๋ฒ์งธ ์ธ์๋ก ์๊ฒ ๋ณต์ฌํ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๊ณ , ๋๋ฒ์งธ ์ธ์๋ก ๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํด ํธ์ถํ Mapping ํจ์๋ฅผ ์ ๋ฌํ๋ค.
Array.from(arrayLike[, mapFn[, thisArg]])
Array.from('foo');
// expected output: Array ["f", "o", "o"]
Array.from([1, 2, 3], x => x + x);
// expected output: Array [2, 4, 6]