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

JavaScriptで配列から重複レコードを削除・フィルタリングする方法

JavaScriptでオブジェクトの配列を扱う際、重複した値を含むレコードを整理したいケースはよくあります。ここでは、Set()を使って配列から重複レコードを効率的に削除・フィルタリングする方法を解説します。

重複値を含むサンプルデータ

まず、以下のように重複した値を含むレコードがあるとします。

var objectOfNationality =
    [
      { nationality: "Indian" },
      { nationality: "American" },
      { nationality: "Emirati" },
      { nationality: "Indian" },
      { nationality: "American" }
    ];

このデータには「Indian」と「American」がそれぞれ2回ずつ含まれています。これらの重複を取り除いて、一意の値だけを抽出しましょう。

Set()を使った重複削除の実装例

重複レコードを削除するには、Set()の概念を利用します。Setは重複しない値のコレクションを保持するため、重複排除に最適です。以下がそのコードです。

var objectOfNationality =
    [
      { nationality: "Indian" },
      { nationality: "American" },
      { nationality: "Emirati" },
      { nationality: "Indian" },
      { nationality: "American" }
    ];
function removeOrFilterNationality(objectOfNationality) {
    return Array.from(new Set(objectOfNationality.map(tempObject => tempObject.nationality)));
}
console.log(removeOrFilterNationality(objectOfNationality));

コードの仕組み

このコードの処理の流れは以下の通りです。

map()メソッドで各オブジェクトからnationalityプロパティの値だけを抽出し、その配列をnew Set()に渡すことで重複が自動的に排除されます。最後にArray.from()でSetオブジェクトを通常の配列に変換して返しています。

プログラムの実行方法

上記のプログラムを実行するには、Node.js環境で以下のコマンドを使用します。

node fileName.js

ここでは、ファイル名をdemo228.jsとして保存しています。

実行結果

実行すると、以下のように重複が削除された一意の値のみが出力されます。

PS C:\Users\Amit\JavaScript-code> node demo228.js
[ 'Indian', 'American', 'Emirati' ]

このように、Set()map()を組み合わせることで、わずか数行のコードで配列から重複レコードを簡単に削除できます。ES6以降の環境であれば、追加のライブラリも不要なため、実務でも広く使われているテクニックです。

  1. 【初心者向け】JavaScriptのArray.from()メソッドの使い方を実例で解説

    JavaScript の Array.from() メソッドは、length プロパティを持つオブジェクト(配列風オブジェクト)や、文字列・Map・Set などの反復可能(イテラブル)なオブジェクトから、新しい Array オブジェクトを生成して返すためのメソッドです。元のオブジェクトは変更されず、常に新しい配列インスタンスが返されます。 基本構文 Array.from(obj, mapFunction, val) パラメータの説明 obj:配列へ変換したい対象のオブジェクト。配列風オブジェクト(length プロパティを持つもの)や反復可能なオブジェクトを指定します。 mapFunctio

  2. JavaScriptのArray.from()メソッドとは?使い方と実例をわかりやすく解説

    Array.from()メソッドは、配列風オブジェクト(array-like)や反復可能オブジェクト(iterable)から、新しい配列オブジェクトを作成するための便利なメソッドです。文字列、Map、Set、NodeListなど、さまざまなデータを手軽に配列へ変換できます。 Array.from()の基本的な動作 例えば、文字列「HelloWorld」に対してArray.from()を使用すると、1文字ずつ分割された新しい配列が生成されます。以下に実際のコード例を示します。 サンプルコード <!DOCTYPE html> <html lang="ja"&g