map-and-set
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.3 • Public • Published

    map-and-set

    This package provides Map and Set implementations that have very similar API to ECMAScript's Map and Set.

    Unlike ECMAScript's ones, they have hash and equality functions. You can use objects for keys of Map and values of Set without worrying about objects' identity.

    Implementations of Map and Set are inspired by an article: [V8 Deep Dives] Understanding Map Internals | by Andrey Pechkurov | ITNEXT. Thanks Andrey.

    Install

    You can install it with npm.

    npm install map-and-set

    Example

    import { Map, Set, makeHashAndEqualFunction } from 'map-and-set'
    
    interface User {
      id: number
      name: string
    }
    
    const map = new Map<User, number>(null, {
      hash: (user) => user.id,
      equal: (user1, user2) => user1.id === user2.id
    })
    
    // You can write shortly with utility function
    const map_ = new Map<User, number>(
      null,
      makeHashAndEqualFunction((user) => [user.id])
    )
    
    map.set({ id: 1, name: 'Tom' }, 99)
    map.set({ id: 2, name: 'Michael' }, 100)
    
    map.get({ id: 1, name: 'Tom' }) // => 99
    map.has({ id: 1, name: 'Tom' }) // => true
    map.has({ id: 1, name: 'Unknown' }) // => true
    map.has({ id: 3, name: 'Tom' }) // => false
    
    map.delete({ id: 1 })
    map.has({ id: 1, name: 'Tom' }) // => false
    
    const set = new Set<User>(
      null,
      makeHashAndEqualityFunction((user) => [user.id])
    )
    
    set.add({ id: 10, name: 'Tomoko' })
    set.add({ id: 11, name: 'Yuya' })
    
    set.has({ id: 10, name: 'Tomoko' }) // => true
    set.has({ id: 10, name: 'Unknown' }) // => true
    set.has({ id: 11, name: 'Yuya' }) // => true
    set.has({ id: 99, name: 'Unknown' }) // => false
    
    set.delete({ id: 11, name: 'Yuya' })
    set.has({ id: 11, name: 'Yuya' }) // => false

    License

    MIT

    Keywords

    none

    Install

    npm i map-and-set

    DownloadsWeekly Downloads

    2

    Version

    0.0.3

    License

    MIT

    Unpacked Size

    17.2 kB

    Total Files

    11

    Last publish

    Collaborators

    • odiak