≪ Today I learned. RSS購読
公開日
タグ
JavaScript
著者
ダーシノ(@bc_rikko)

ES2025で追加される新しいSetメソッドを使ってfilter実装を簡素化する

ES2025で追加予定(現在Stage4)の新しいSetメソッドを使うとArray#filter()の実装が楽になる。

新しいSetメソッドによって集合を簡単に扱えるようになった。Arrayが必要になったらArray.from(SET)のようにできるので、データをArrayの代わりにSetで持つのも良いかもしれない。

Array#filter()を使う場合

class Item {
  constructor(public id: number) {}
}

const one = new Item(1)
const two = new Item(2)
const three = new Item(3)

const items = [one, two, three]
const usedItems = [one, two]
const selectedItems = [two, three]

const isUsed = selectedItems.some(a => usedItems.includes(a)) // true
const unusedItems = items.filter(a => usedItems.includes(a) === false) // three

Setを使う場合

const items = new Set([one, two, three])
const usedItems = new Set([one, two])
const selectedItems = new Set([two, three])

const isUsed = selectedItems.isDisjointFrom(usedItems) === false  // true
const unusedItems = items.difference(usedItems) // new Set([ three ])