二次元配列の配列リテラルによる初期化
const array = [
[1, 2, 0, 0, 0, 0, 0, 0, 0, 0],
[3, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
];
console.log(array);
// (5) [Array(10), Array(10), Array(10), Array(10), Array(10)]
// 0: (10) [1, 2, 0, 0, 0, 0, 0, 0, 0, 0]
// 1: (10) [3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 2: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 3: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 4: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
二次元配列の初期化
/**
* 二次元配列の作成
* @param {integer} N - 行数
* @param {integer} M - 列数
* @param {*} [value=0] - 初期化する値
* @return {Array} 作成した二次元配列
*/
function create2DArray(N, M, value) {
const val = value !== void 0 ? value : 0;
const array = [];//new Array(N);
for(let r=0; r<N; r++) {
array[r] = [];//new Array(M);
for(let c=0; c<M; c++) {
array[r][c] = val;
}
}
return array;
};
ワンライナー版
const create2DArray = (N, M, value=0) => Array.from({length:N}, _ => new Array(M).fill(value));
使用例
console.log(create2DArray(5, 10));
// (5) [Array(10), Array(10), Array(10), Array(10), Array(10)]
// 0: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 1: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 2: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 3: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 4: (10) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
var a = create2DArray(5, 10, 9);
a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 3;
console.log(a);
// (5) [Array(10), Array(10), Array(10), Array(10), Array(10)]
// 0: (10) [1, 2, 9, 9, 9, 9, 9, 9, 9, 9]
// 1: (10) [3, 9, 9, 9, 9, 9, 9, 9, 9, 9]
// 2: (10) [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
// 3: (10) [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
// 4: (10) [9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
備考
一次元配列の初期化const create1DArray = (N, value=0) => new Array(N).fill(value);
三次元配列の初期化const create3DArray = (N, M, L, value=0) => Array.from({length:N}, _ => Array.from({length:M}, __ => new Array(L).fill(value)));
二次元配列の文字列からの初期化
空白区切りconst input = `1 2 3 4 5
11 12 13 14 15
21 22 23 24 25`;
const array = input.split('\n').map(v => v.split(' ').map(Number));
console.log(array);
// (3) [Array(5), Array(5), Array(5)]
// 0: (5) [1, 2, 3, 4, 5]
// 1: (5) [11, 12, 13, 14, 15]
// 2: (5) [21, 22, 23, 24, 25]
カンマ区切りconst input = `1,2,3,4,5
11,12,13,14,15
21,22,23,24,25`;
const array = input.split('\n').map(v => v.split(',').map(Number));
console.log(array);
// (3) [Array(5), Array(5), Array(5)]
// 0: (5) [1, 2, 3, 4, 5]
// 1: (5) [11, 12, 13, 14, 15]
// 2: (5) [21, 22, 23, 24, 25]