Skip to content

uniqBy (Iterator) ​

変換したキーがまだ登場していないイテレータの要素を、遅延的に生成します。

typescript
const unique = uniqBy(source, getKey);

使用法 ​

uniqBy(source, getKey) ​

要素のストリームを、導出したキーで重複除去したいときに uniqBy を使用してください。たとえば、ユーザー ID ごとに最初のイベントだけを残す場合などです。最初に登場した順序が保たれ、キーは SameValueZero のセマンティクス(Set と同じ)で比較されるため、NaN のキーも重複除去されます。重複除去はストリーミングで行われます。各要素は一意だと分かった時点ですぐに出力されるため、途中で打ち切れるヘルパーで範囲を区切れば、無限イテレータでも使用できます。

typescript
import { uniqBy } from 'es-toolkit/iterator';

// 変換したキーごとに最初の要素を残します。
uniqBy([1.1, 1.2, 2.3, 2.4].values(), Math.floor).toArray();
// 結果: [1.1, 2.3]

// 導出したキーでオブジェクトを重複除去します。
const events = [
  { userId: 1, type: 'click' },
  { userId: 1, type: 'view' },
  { userId: 2, type: 'click' },
];
uniqBy(events.values(), e => e.userId).toArray();
// 結果: [{ userId: 1, type: 'click' }, { userId: 2, type: 'click' }]

パラメータ ​

  • source (Iterator<T>): 重複除去するイテレータです。
  • getKey ((value: T) => K): 要素を、重複の検出に使うキーに変換します。

戻り値 ​

(IteratorObject<T, undefined>): 重複したキーを持つ要素を取り除いた遅延評価のイテレータです。ネイティブのイテレータヘルパー(map、take、toArray など)をすべて備えているため、そのままチェーンを続けられます。

MIT ライセンスの下で配布されています。