【2024年最新版】JavaScriptで二次元配列を扱うためのベストプラクティス

2024-04-02

JavaScriptで二次元配列を作成する方法

配列リテラルを使用する

これは最もシンプルで分かりやすい方法です。以下のように、内側の配列をカンマで区切って、外側の配列を作成します。

const array2d = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

このコードは、3行3列の二次元配列を作成します。

Array.prototype.map()を使用して、二次元配列を作成することもできます。以下のように、内側の配列を生成する関数を受け取り、その関数を各要素に適用します。

const array2d = Array(3).fill(null).map(() => Array(3).fill(0));
const array2d = Array(3).reduce((acc, _, i) => {
  acc.push(Array(3).fill(i));
  return acc;
}, []);

ライブラリを使用する

Lodashなどのライブラリを使用すると、二次元配列を簡単に作成することができます。

const array2d = _.range(3).map(() => _.range(3));
  • シンプルで分かりやすい方法を求めている場合は、配列リテラルを使用するのがおすすめです。
  • 内側の配列を動的に生成したい場合は、Array.prototype.map()またはArray.prototype.reduce()を使用するのがおすすめです。
  • ライブラリを既に使用している場合は、ライブラリの機能を利用するのがおすすめです。

JavaScriptで二次元配列を作成するには、いくつかの方法があります。それぞれの方法の特徴を理解して、状況に応じて使い分けましょう。




// 配列リテラル
const array2dLiteral = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

// Array.prototype.map()
const array2dMap = Array(3).fill(null).map(() => Array(3).fill(0));

// Array.prototype.reduce()
const array2dReduce = Array(3).reduce((acc, _, i) => {
  acc.push(Array(3).fill(i));
  return acc;
}, []);

// Lodash
const _ = require('lodash');
const array2dLodash = _.range(3).map(() => _.range(3));

console.log(array2dLiteral); // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
console.log(array2dMap); // [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
console.log(array2dReduce); // [[0, 0, 0], [1, 1, 1], [2, 2, 2]]
console.log(array2dLodash); // [[0, 1, 2], [0, 1, 2], [0, 1, 2]]

このコードを実行すると、以下の出力が得られます。

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 0], [1, 1, 1], [2, 2, 2]]
[[0, 1, 2], [0, 1, 2], [0, 1, 2]]



JavaScriptで二次元配列を作成するその他の方法

forループを使用する

const array2d = [];
for (let i = 0; i < 3; i++) {
  array2d.push([]);
  for (let j = 0; j < 3; j++) {
    array2d[i].push(i * 3 + j);
  }
}

ジェネレータを使用する

function* createArray2d(rows, columns) {
  for (let i = 0; i < rows; i++) {
    yield Array(columns).fill(i);
  }
}

const array2d = [...createArray2d(3, 3)];

スプレッド構文を使用する

const array2d = [
  ...Array(3).fill([1, 2, 3]),
  ...Array(3).fill([4, 5, 6]),
  ...Array(3).fill([7, 8, 9]),
];
  • 処理速度を重視したい場合は、forループを使用するのがおすすめです。
  • ジェネレータやスプレッド構文に慣れている場合は、それらを使用するのも良いでしょう。

javascript arrays multidimensional-array


【徹底解説】JavaScript/jQuery/CSSでクラス操作:特定の文字列から始まるクラスを削除

この解説では、JavaScript、jQuery、CSSを用いて、特定の文字列から始まるすべてのクラスを要素から削除する方法について、それぞれの特徴や注意点も含めて詳しく解説します。JavaScriptの標準機能である classList プロパティを使うと、要素のクラスリストを操作できます。...


JavaScriptで書式指定付きで日付時刻を変換する方法

以下の2つの関数を主に使用します。Date. parse(): 文字列をDateオブジェクトに変換します。Date. prototype. toLocaleDateString(): Dateオブジェクトを指定された書式で文字列に変換します。...


キーボードショートカットを自由自在に!JavaScriptでCtrl+C/Vを検出する方法

このチュートリアルでは、JavaScriptを使用して、Ctrl+C(コピー)とCtrl+V(貼り付け)のショートカットキーが押されたかどうかを検出する方法を説明します。この方法は、WebサイトやWebアプリケーションで独自のショートカットキーを実装したい場合に役立ちます。...


【保存版】JavaScriptで``リンククリック時に確認ダイアログを表示する2つの方法

必要なものHTML ファイルJavaScript ファイル手順HTML ファイルで、確認ダイアログを表示したい <a> リンクを作成します。JavaScript ファイルで、confirm() メソッドを使用して確認ダイアログを表示します。...


AngularJSにおけるスコーププロトタイプ継承とは?

スコープは、AngularJSアプリケーション内で変数や関数を格納するためのコンテナです。各スコープは、プロトタイプチェーンと呼ばれる階層構造に属します。プロトタイプ継承とは、あるオブジェクト(子オブジェクト)が別のオブジェクト(親オブジェクト)のプロパティとメソッドを継承するメカニズムです。子オブジェクトは、親オブジェクトのプロパティを変更したり、新しいプロパティを追加したりすることができます。...