JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで2つの2次元配列が等しいかどうかを判定する方法

本記事では、2つの2次元配列(配列の配列)を受け取り、両者が等しいかどうかを判定した結果を真偽値(boolean)で返すJavaScript関数の実装方法を解説します。

2次元配列の「同等性」の定義

ここでの「等しい」とは、対応する位置にある要素がすべて一致していることを意味します。具体的には、以下の条件を満たす必要があります。

  • 両方の配列は同じ行数を持つ
  • 各行(内側の配列)は同じ列数(長さ)を持つ
  • すべての i と j について arr1[i][j] === arr2[i][j] が成立する
arr1[i][j] === arr2[i][j]

上記の比較式が、行数の範囲内のすべての i、および列数の範囲内のすべての j に対して true を返せば、2つの配列は同等であると判断できます。

コード例

それでは、この判定を行う関数を実際に書いてみましょう。

const arr1 = [
   [1, 1, 1],
   [2, 2, 2],
   [3, 3, 3],
];
const arr2 = [
   [1, 1, 1],
   [2, 2, 2],
   [3, 3, 3],
];
const areEqual = (first, second) => {
   const { length: l1 } = first;
   const { length: l2 } = second;
   if(l1 !== l2){
      return false;
   };
   for(let i = 0; i < l1; i++){
      for(let j = 0; j < first[i].length; j++){
         if(first[i][j] !== second[i][j]){
            return false;
         };
      };
   };
   return true;
};
console.log(areEqual(arr1, arr2));

コードの解説

この関数は以下の手順で動作します。

  1. まず、両方の配列の行数(length)を取得し、異なる場合は即座に false を返します。
  2. 外側のループで各行を走査し、内側のループでその行の各要素を順番に比較します。
  3. 1つでも一致しない要素が見つかった時点で false を返して処理を終了します(早期リターンにより無駄な比較を避けられます)。
  4. すべての要素が一致していれば、最後に true を返します。

出力結果

コンソールには以下のように表示されます。

true

注意点

この実装では、厳密等価演算子(===)を使用しているため、型まで含めて比較されます。たとえば、数値の 1 と文字列の '1' は等しくないと判定されます。また、ネストされた配列の長さが異なる場合も考慮したい場合は、内側のループ前に first[i].length !== second[i].length のチェックを追加するとより堅牢になります。

  1. JavaScriptの緩い等価(==)演算子とは?仕組みと使い方を解説

    JavaScriptにおける「緩い等価(Loose Equality)」を表す演算子が「==」(抽象的等価演算子)です。この演算子を使うと、比較対象となるオペランド同士の値がまず共通の型へ自動的に変換され、その上で等しいかどうかが判定されます。 そのため、型が異なる値同士であっても比較が成立します。例えば、数値の 1 と文字列の 1 を比較すると、文字列側が数値へ変換されて true となります。また、undefined == null も特別なルールによって true と評価されます。 一方で、暗黙的な型変換によって意図しない結果を招く可能性があるため、実務ではより厳密な比較を行う「===

  2. JavaScriptで2つの配列を乗算する方法|forループとmap()の実装例

    JavaScriptで2つの配列の各要素同士を乗算し、その結果を新しい配列として取得する方法を解説します。基本的にはforループでインデックスを順番に処理しながら、対応する位置にある要素同士を掛け合わせていくシンプルなアプローチです。 2つの配列を乗算するサンプルコード 以下の例では、「CLICK HERE」ボタンをクリックすると、配列 arr と arr1 の対応する要素が乗算され、結果が新しい配列 multArray に格納された上で画面に表示されます。 <!DOCTYPE html> <html lang=en> <head> <meta ch