JavaScriptで多次元配列の初期化を行う
2019-05-055 min read
目次
概要
JavaScript(ES2015)で多次元配列を任意の値で初期化する方法について。
1次元配列
例えば、
let arr = new Array(5);
と宣言した場合
console.log(arr[0]);
// undefined
となります。
ここでfillメソッドを使うことで初期化することができます。
let arr = new Array(5).fill(0);
console.log(JSON.stringify(arr));
// [0,0,0,0,0]
2次元配列
Array.from()を使って浅いコピーを行い2次元行列を生成します。
Array.from(new Array(3), () => new Array(3).fill(0));
console.log(JSON.stringify(arr));
// [[0,0,0],[0,0,0],[0,0,0]]
調べたら色々な方法が出てきますが、見た中で一番スマートな方法はこれだと思います。
ちなみに以下のように生成した場合、参照先が同じ配列となるため、 期待とは異なる配列が生成されるようです。
let arr = new Array(3).fill(new Array(3).fill(0));
console.log(JSON.stringify(arr));
// [[0,0,0],[0,0,0],[0,0,0]]
arr[0][0] = 1;
console.log(JSON.stringify(arr));
// [[1,0,0],[1,0,0],[1,0,0]]
3次元配列
2次元配列の生成を応用して3次元配列を生成してみます。 画像のRGB値を扱うときに便利かもしれません。
let arr = Array.from(new Array(3), () => {
return Array.from(new Array(3), () => new Array(3).fill(0));
});
console.log(JSON.stringify(arr));
// [
// [[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]]
// ]
参考
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Recommends
New Posts
Hot posts!
Date
Tags
(110)
(54)
(54)
(47)
(45)
(36)
(30)
(29)
(24)
(24)
(22)
(21)
(21)
(20)
(19)
(17)
(16)
(16)
(15)
(14)
(12)
(12)
(12)
(12)
(12)
(12)
(11)
(10)
(10)
(10)
(10)
(10)
(9)
(9)
(8)
(8)
(8)
(8)
(7)
(7)
(6)
(6)
(6)
(6)
(6)
(5)
(5)
(5)
(5)
(4)
Author