[TypeScript]配列(Array)の重複を削除するには?

TypeScript

どうも、ちょげ(@chogetarou)です。

配列(array)の重複する同じ値を削除する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(array)の重複する同じ値を削除する方法は、3つあります。

Set + スプレッド構文

1つ目は、Setとスプレッド構文を使う方法です。

まず、Array.from()を呼び出します。

そして、Array.from()の引数に、配列をSetに変換した結果を指定します。

//array=配列
const result: T[] = Array.from(new Set(array))

上記のArray.from()は、配列から重複する同じ値を削除した配列(Array)を返します。

使用例

const nums: number[] = [1, 2, 2, 1, 2, 3, 1, 3]

const result: number[] = Array.from(new Set(nums))

console.log(result)
出力:
[1, 2, 3] 

Set + Array.from()

2つ目は、SetとArray.from()を使う方法です。

まず、[…]を記述します。

そして、「…」の右辺に、配列をSetに変換した結果を指定します。

//array=配列
const result: T[] = [...new Set(array)]

上記のスプレッド構文は、配列から重複する同じ値を削除した配列(Array)を返します。

使用例

const nums: number[] = [1, 2, 2, 1, 2, 3, 1, 3]

const result: number[] = [...new Set(nums)]

console.log(result)
出力:
[1, 2, 3] 

filter()

3つ目は、filter()を使う方法です。

まず、配列からfilter()を呼び出します。

filter()の引数に、2つの引数を持つラムダ式を指定します。

ラムダ式で、配列から呼び出したindexOf()とラムダ式の第2引数を「===」で比較します。

indexOf()の引数に、ラムダ式の第1引数を指定します。

//array=配列
const result: T[] = array.filter((value, index) => array.indexOf(value) === index)

上記のfilter()は、配列から重複する同じ値を削除した配列(Array)を返します。

使用例

const nums: number[] = [1, 2, 2, 1, 2, 3, 1, 3]

const result: number[] = nums.filter((value, index) => nums.indexOf(value) === index)

console.log(result)
出力:
[1, 2, 3] 

まとめ

配列(array)の重複する同じ値を削除する方法は、次の3つです。

  • Setとスプレッド構文を使う方法
    const result: T[] = Array.from(new Set(array))
  • SetとArray.from()を使う方法
    const result: T[] = [...new Set(array)]
  • リストを使う方法
    const result: T[] = array.filter((value, index) => array.indexOf(value) === index)

コメント

タイトルとURLをコピーしました