JSPM

rotated-array-set

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 43871
  • Score
    100M100P100Q165207F
  • License MIT

Set of (possibly rotated) arrays

Package Exports

  • rotated-array-set

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rotated-array-set) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

npm version downloads build status coverage status Language grade: JavaScript Node.JS version

rotated-array-set

RotatedArraySet is a class looking a bit like the built-in Set but is a set of arrays of T, and treats rotated arrays as "same".

API

Construct a RotatedArraySet, optionally provide a stringify method, converting T to string (this is not necessary for primitive types).

Example

import { RotatedArraySet } from 'rotated-array-set'

const tree = new RotatedArraySet< string >( );

tree.insert( [ 'a', 'b', 'c' ] );
tree.insert( [ 'x', 'y' ] );
tree.insert( [ 'c', 'a', 'b' ] ); // won't insert, already has this but rotated
tree.insert( [ 'y', 'x' ] ); // won't insert, same reason

tree.has( [ 'b', 'c', 'a' ] ); // true
tree.has( [ 'c', 'b', 'a' ] ); // false - this isn't *rotated*

tree.values( ); // [ [ 'a', 'b', 'c' ], [ 'x', 'y' ] ]

Provide a custom stringifier:

import { RotatedArraySet } from 'rotated-array-set'

const tree = new RotatedArraySet< User >( user => `${user.first} ${user.last}` );

tree.insert( [ user1, user2, user3 ] );
tree.insert( [ user3, user1, user2 ] ); // won't insert, already has this but rotated

tree.has( [ user2, user3, user1 ] ); // true
tree.has( [ user3, user2, user1 ] ); // false - not *rotated*

tree.values( ); // [ [ user1, user2, user3 ] ]