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

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

はじめに

本記事では、2つの配列を受け取り、対応する要素同士を順番に比較して、すべての要素が一致していれば true を、1つでも異なる要素があれば false を返すJavaScript関数の作成方法を解説します。

アプローチ

配列の同等性をチェックする際は、以下の手順で処理を行うのが基本的な考え方です。

  • まず、両方の配列の長さを比較します。長さが異なる場合は、その時点で false を返せば十分です。
  • 次に、ループを使って各インデックスの要素を厳密等価演算子(===)で比較し、不一致が見つかった時点で false を返します。
  • ループが最後まで完了し、すべての要素が一致していれば、最終的に true を返します。

早期リターンを活用することで、無駄な比較を避け、効率的に判定できます。

コード例

以下は実際の実装例です。

const arr1 = [1, 4, 5, 3, 5, 6];
const arr2 = [1, 4, 5, 2, 5, 6];

const areEqual = (first, second) => {
   // 長さが異なれば等しい配列ではない
   if (first.length !== second.length) {
      return false;
   }

   for (let i = 0; i < first.length; i++) {
      // 要素が一致していれば次へ進む
      if (first[i] === second[i]) {
         continue;
      }
      // 一致しない要素があれば false を返す
      return false;
   }

   return true;
};

console.log(areEqual(arr1, arr2));

出力結果

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

false

解説

この例では、arr1 の4番目の要素は「3」であるのに対し、arr2 の4番目の要素は「2」と異なっています。そのため、ループ内で不一致が検出された時点で false が返され、それ以降の要素は比較されません。

なお、配列同士を ===== で直接比較しても、参照先が異なる限り必ず false になるため、このように要素を1つずつ比較する関数が必要になります。より簡潔に書きたい場合は、every() メソッドを使う方法もあります。

  1. JavaScriptで2つの配列の合計を等しくする!要素交換アルゴリズムの解説

    問題の概要数値を格納した2つの配列 arr1 と arr2 を、それぞれ第1引数・第2引数として受け取るJavaScript関数を実装することを考えます。ここで、arr1 の要素の合計と arr2 の要素の合計は互いに異なっています。この関数には次のような役割を持たせます。まず arr1 から1つの要素を取り出して arr2 へ移動させ、同時に arr2 から1つの要素を取り出して arr1 へ移動させます。この操作によって、両方の配列の要素の合計が等しくなるようにします。最後に、交換した2つの要素を配列として返します。例として、関数への入力が以下の場合を確認してみましょう。入力const a

  2. C#で2つのシーケンスの差分を取得する方法:Except()メソッドの使い方

    C#では、LINQのExcept()メソッドを使うことで、2つのシーケンス(コレクション)の差分を簡単に求めることができます。この記事では、Except()メソッドを使って、片方のシーケンスにのみ存在する要素を抽出する方法を解説します。 2つのシーケンスを準備する まず、比較対象となる2つのdouble型の配列を用意します。 double[] arr1 = { 10.2, 15.6, 23.3, 30.5, 50.2 }; double[] arr2 = { 15.6, 30.5, 50.2 }; ここでは、arr1には5つの要素が含まれ、arr2にはそのうちの3つの要素が含まれています。 E