Skip to content

chlbri/better-set

Repository files navigation

@bemedev/better-set

A better Set implementation with customizable equality and set algebra helpers.

Install

pnpm add @bemedev/better-set

Features

  • Custom equality comparison for complex values
  • createBetterSet and alias createSet
  • Full iterable support with for...of
  • union, intersection, difference, symmetricDifference
  • isSubsetOf, isSupersetOf, isDisjointFrom
  • size, isEmpty, toArray, entries, keys, values, forEach, clear, delete

Usage

import { createBetterSet } from '@bemedev/better-set';

const set = createBetterSet<{ id: number }>((a, b) => a.id === b.id);

set.add({ id: 1 }, { id: 1 }, { id: 2 });

console.log(set.size); // 2
console.log(set.toArray); // [ { id: 1 }, { id: 2 } ]

API

createBetterSet<T>(equals?: (a: T, b: T) => boolean)

  • equals — optional custom comparator used to detect duplicates.
  • Returns BetterSet<T>.

BetterSet properties and methods

  • add(...items)
  • has(item)
  • size
  • isEmpty
  • clear()
  • delete(item)
  • forEach(callback)
  • toArray
  • entries
  • keys
  • values
  • union(other, equals)
  • intersection(other, equals)
  • difference(other, equals)
  • symmetricDifference(other, equals)
  • isSubsetOf(other)
  • isSupersetOf(other)
  • isDisjointFrom(other)

CHANGELOG

Read CHANGELOG.md for release notes.

License

MIT

Author

chlbri (bri_lvi@icloud.com)

My github

Links

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Generated from chlbri/new-package