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

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