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以降の環境であれば、追加のライブラリも不要なため、実務でも広く使われているテクニックです。
-
【初心者向け】JavaScriptのArray.from()メソッドの使い方を実例で解説
JavaScript の Array.from() メソッドは、length プロパティを持つオブジェクト(配列風オブジェクト)や、文字列・Map・Set などの反復可能(イテラブル)なオブジェクトから、新しい Array オブジェクトを生成して返すためのメソッドです。元のオブジェクトは変更されず、常に新しい配列インスタンスが返されます。 基本構文 Array.from(obj, mapFunction, val) パラメータの説明 obj:配列へ変換したい対象のオブジェクト。配列風オブジェクト(length プロパティを持つもの)や反復可能なオブジェクトを指定します。 mapFunctio
-
JavaScriptのArray.from()メソッドとは?使い方と実例をわかりやすく解説
Array.from()メソッドは、配列風オブジェクト(array-like)や反復可能オブジェクト(iterable)から、新しい配列オブジェクトを作成するための便利なメソッドです。文字列、Map、Set、NodeListなど、さまざまなデータを手軽に配列へ変換できます。 Array.from()の基本的な動作 例えば、文字列「HelloWorld」に対してArray.from()を使用すると、1文字ずつ分割された新しい配列が生成されます。以下に実際のコード例を示します。 サンプルコード <!DOCTYPE html> <html lang="ja"&g