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

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

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

実装の考え方

まず、2つの配列の長さを比較します。長さが異なる時点で対応する要素同士の比較は成立しないため、即座に false を返します。次に、ループ処理で各要素を順番に厳密等価演算子(===)を使って比較し、不一致が見つかった時点で false を返します。最後まで一致が続けば true を返します。

コード例

実際のコードは以下のとおりです。

const arr1 = [6, 7, 8, 9, 10, 11, 12, 14];
const arr2 = [6, 7, 8, 9, 10, 11, 12, 14];
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;
        }
        return false;
    };
    return true;
};
console.log(areEqual(arr1, arr2));

出力結果

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

True

別のアプローチ: every() メソッドを活用する

より簡潔に記述したい場合は、Array.prototype.every() を使う方法もおすすめです。長さの一致を確認しつつ、各要素を1行で比較できます。

const areEqual = (first, second) =>
    first.length === second.length &&
    first.every((val, i) => val === second[i]);

console.log(areEqual([1, 2, 3], [1, 2, 3])); // true
console.log(areEqual([1, 2, 3], [1, 4, 3])); // false

この方法であれば、コードの意図が明確になり、可読性も大きく向上します。状況に応じて、forループによる実装と every() を使った実装を使い分けるとよいでしょう。

  1. JavaScriptにおける厳密等価演算子(===)と寛容等価演算子(==)の違いを徹底解説

    はじめにJavaScriptには、値を比較するための2種類の等価演算子が用意されています。それぞれ動作が異なるため、適切に使い分けることが重要です。寛容等価演算子(==)とは寛容等価演算子(==)は、比較対象となるオペランド同士の値を共通の型に変換(型強制)した上で、等しいかどうかを判定します。そのため、数値と文字列のように異なる型同士でも、「値が同じ」とみなされれば true を返します。厳密等価演算子(===)とは一方、厳密等価演算子(===)は、値だけでなくデータ型まで含めて比較を行います。値と型の両方が一致した場合にのみ true を返し、それ以外は false を返します。予期しない

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

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