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 ])