サイトアイコン IT NEWS

JavaScriptの配列に重複する値が含まれるか判定する2つの方法

今回は、JavaScriptで1つの変数の配列内に、重複する値が含まれるかどうかを判定する方法について解説します。
例えば、データを集計した際に同じデータが含まれているか検索する場合に便利です。
また、この方法を利用すれば、連想配列(多次元配列)についても同様に重複する値の判定が可能です。

Setオブジェクトを使用する

JavaScriptSetオブジェクトは、重複を許さない値の集合を扱うためのデータ構造です。
配列Setオブジェクトに変換し、配列の長さとSetオブジェクトのサイズを比較することで、重複する値が含まれているかどうかを判定できます。

以下は、この方法を使用したサンプルコードです。

function hasDuplicateValue(array) {
  const set = new Set(array);
  return array.length !== set.size;
}

const myArray = [1, 2, 3, 4, 5, 2];
const hasDuplicate = hasDuplicateValue(myArray);

if (hasDuplicate) {
  console.log("配列に重複する値が含まれています。");
} else {
  console.log("配列に重複する値は含まれていません。");
}

上記の例では、hasDuplicateValue関数を使用して配列myArray内の重複する値を判定しています。
重複する値が含まれている場合は、hasDuplicate変数の値がtrueとなり、その旨がコンソールに出力されます。

この方法のメリットは、シンプルかつ効率的に重複を判定できることです。
また、Setオブジェクトを使用することで、重複する値を一意に管理することもできます。

オブジェクトを使用する

もう一つの方法として、オブジェクトを使用する方法があります。
この方法では、配列要素をオブジェクトのプロパティとして扱い、重複の有無を判定します。

以下は、この方法を使用したサンプルコードです。

function hasDuplicateValue(array) {
  const valueMap = {};

  for (let i = 0; i < array.length; i++) {
    const value = array[i];
    if (valueMap[value]) {
      return true;
    }
    valueMap[value] = true;
  }

  return false;
}

const myArray = [1, 2, 3, 4, 5, 2];
const hasDuplicate = hasDuplicateValue(myArray);

if (hasDuplicate) {
  console.log("配列に重複する値が含まれています。");
} else {
  console.log("配列に重複する

値は含まれていません。");
}

上記の例では、hasDuplicateValue関数内でオブジェクトvalueMapを使用して、重複する値の有無を判定しています。
配列の要素をオブジェクトのプロパティとして設定し、すでに存在する場合は重複とみなしています。

この方法のメリットは、配列内の重複する値を特定するだけでなく、重複した値を保持することも可能である点です。
また、配列内の重複判定するだけでなく、重複した要素の数や位置などを追加で取得することもできます。

【おまけ】連想配列(多次元配列)で重複の判定

JavaScript連想配列多次元配列)においても、次の方法を使用することで重複する値の判定が可能です。
連想配列の場合は、配列の要素がオブジェクトとして構成されているため、各要素内の配列に対して同様の判定を行います。

以下は、連想配列内の配列に重複する値が含まれているかどうかを判定するサンプルコードの一部です。

function hasDuplicateValueInAssociativeArray(associativeArray) {
  for (let key in associativeArray) {
    if (hasDuplicateValue(associativeArray[key])) {
      return true;
    }
  }
  return false;
}

上記の例では、hasDuplicateValueInAssociativeArray関数内で各配列に対して重複判定の処理を行っています。
連想配列内の各要素(配列)に対して、上記で説明した配列内の重複判定の方法を適用しています。

まとめ

JavaScript配列重複する値が含まれるかどうかを判定する方法として、Setオブジェクトオブジェクトを使用する方法を紹介しました。
Setオブジェクトを使用する方法はシンプルかつ効率的ですが、重複した値を一意に管理する場合にも適しています。
一方、オブジェクトを使用する方法は重複した値の追加情報を取得できる利点があります。

また、連想配列(多次元配列)においても同様の方法で重複判定が可能です。
配列内の重複判定処理を連想配列の各要素に適用することで、連想配列内の重複判定できます。

これらの方法を使用することで、JavaScript配列重複する値が含まれるかどうかを確認できます。

著:CodeMafia 外村将大
¥2,950 (2023/06/19 15:26時点 | Amazon調べ)

モバイルバージョンを終了