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() メソッドを使う方法もあります。
-
JavaScriptで2つの配列の合計を等しくする!要素交換アルゴリズムの解説
問題の概要数値を格納した2つの配列 arr1 と arr2 を、それぞれ第1引数・第2引数として受け取るJavaScript関数を実装することを考えます。ここで、arr1 の要素の合計と arr2 の要素の合計は互いに異なっています。この関数には次のような役割を持たせます。まず arr1 から1つの要素を取り出して arr2 へ移動させ、同時に arr2 から1つの要素を取り出して arr1 へ移動させます。この操作によって、両方の配列の要素の合計が等しくなるようにします。最後に、交換した2つの要素を配列として返します。例として、関数への入力が以下の場合を確認してみましょう。入力const a
-
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