包详细信息

@datastructures-js/set

datastructures-js13.1kMIT4.2.1

Enhanced Set that extends javascript ES6 Set

set, set es6, set js, union

自述文件

@datastructures-js/set

build:? npm npm npm

extends javascript ES6 global Set class and implements new functions in it.

Contents

Install

npm install --save @datastructures-js/set

require

const { EnhancedSet } = require('@datastructures-js/set');

import

import { EnhancedSet } from '@datastructures-js/set';

API

constructor

JS
const set1 = new EnhancedSet(['A', 'B', 'C', 'D']);
const set2 = new EnhancedSet(['C', 'D', 'E', 'F']);
TS
const set1 = new EnhancedSet<string>(['A', 'B', 'C', 'D']);
const set2 = new EnhancedSet<string>(['C', 'D', 'E', 'F']);

union

applies union with another set and returns a set with all elements of the two.

console.log(set1.union(set2)); // EnhancedSet { 'A', 'B', 'C', 'D', 'E', 'F' }

intersect

applies intersection between the set and another set and returns the existing elements in both.

console.log(set1.intersect(set2)); // EnhancedSet { 'C', 'D' }

complement (diff)

finds the complement of another set from the set elements.

console.log(set1.complement(set2)); // EnhancedSet { 'A', 'B' }
console.log(set2.diff(set1)); // EnhancedSet { 'E', 'F' }

isSubsetOf

checks if the set is a subset of another set and returns true if all elements of the set exist in the other set.

console.log(set1.isSubsetOf(new Set(['A', 'B', 'C', 'D', 'E']))); // true
console.log(set1.isSubsetOf(set2)); // false

isSupersetOf

checks if the set is a superset of another set and returns true if all elements of the other set exist in the set.

console.log(set1.isSupersetOf(new Set(['A', 'B']))); // true
console.log(set1.isSupersetOf(set2)); // false

product

applies cartesian product between two sets. Default separator is empty string ''.

console.log(set1.product(set2));
/*
EnhancedSet {
  'AC',
  'AD',
  'AE',
  'AF',
  'BC',
  'BD',
  'BE',
  'BF',
  'CC',
  'CD',
  'CE',
  'CF',
  'DC',
  'DD', 
  'DE',
  'DF'
}
*/

console.log(set1.product(set2, ','));
/*
EnhancedSet {
  'A,C',
  'A,D',
  'A,E',
  'A,F',
  'B,C',
  'B,D',
  'B,E',
  'B,F',
  'C,C',
  'C,D',
  'C,E',
  'C,F',
  'D,C',
  'D,D', 
  'D,E',
  'D,F'
}
*/

power

applies cartesian product on the set itself and accepts a second param as a separator with default as empty string.

const x = new EnhancedSet(['A', 'B']);

const y = x.power(2);
console.log(y);
/*
EnhancedSet(4) [Set] {
  'AA',
  'AB',
  'BA',
  'BB'
}
*/

const z = y.power(2);
console.log(z);
/*
EnhancedSet(16) [Set] {
  'AAAA',
  'AAAB',
  'AABA',
  'AABB',
  'ABAA',
  'ABAB',
  'ABBA',
  'ABBB',
  'BAAA',
  'BAAB',
  'BABA',
  'BABB',
  'BBAA',
  'BBAB',
  'BBBA',
  'BBBB'
}
*/

permutations

generates m permutations from the set elements. It also accepts a second param as the separator, default is empty string ''.

const x = new EnhancedSet(['A', 'B', 'C', 'D']);

const y = x.permutations(2);
console.log(y);
/*
EnhancedSet(12) [Set] {
  'AB',
  'AC',
  'AD',
  'BA',
  'BC',
  'BD',
  'CA',
  'CB',
  'CD',
  'DA',
  'DB',
  'DC'
}
*/

equals

checks if two sets are equal.

console.log(set1.equals(new Set(['B', 'A', 'D', 'C']))); // true
console.log(set1.equals(new EnhancedSet(['D', 'C']))); // false

filter

filters the set based on a callback and returns the filtered set.

console.log(set1.filter((el) => el > 'B')); // EnhancedSet { 'C', 'D' }

toArray

converts the set into an array.

console.log(set1.toArray()); // [ 'A', 'B', 'C', 'D' ]

clone

clones the set.

console.log(set1.clone()); // EnhancedSet { 'A', 'B', 'C', 'D' }

Build

grunt build

License

The MIT License. Full License is here

更新日志

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[4.2.1] - 2022-08-15

Fixed

  • add types to package.json

[4.2.0] - 2022-05-30

Added

  • diff as an alias for complement

Fixed

  • readme
  • ts types

[4.1.2] - 2022-02-11

Fixed

  • cleanup temp files

[4.1.1] - 2021-06-20

Fixed

  • index.d.ts

[4.1.0] - 2021-06-14

Added

  • typescript.

[4.0.0] - 2021-01-03

Changed

  • named export from index.

Fixed

  • jsdoc
  • readme.

[3.1.1] - 2020-12-24

Fixed

  • .permutations to concatenate digits as strings.

[3.1.0] - 2020-12-19

Added

  • .permutations(m, separator) to generate m permutations from the set.

[3.0.0] - 2020-12-12

Added

  • .power(m, separator) to generate the cartesian product between the set elements m times.

Changed

  • default separator in .product(set, separator) is now an empty string.

[2.3.0] - 2020-05-10

Added

  • .clone()

[2.2.1] - 2020-04-25

Fixed

  • remove unused dependency.

[2.2.0] - 2020-04-25

Added

  • .equals(set) to check if two sets are equal.
  • .filter(cb) to filter set elements based on a callback.
  • .toArray() to convert the set into an array.

Fixed

  • README

[2.1.0] - 2020-04-17

Added

  • enable using a custom separator between elements in .product.

[2.0.2] - 2020-04-03

Fixed

  • README

[2.0.1] - 2020-04-03

Fixed

  • README & jsdoc

[2.0.0] - 2020-03-14

Changed

  • extends existing javascript Set class.
  • implements set operations in the new extended class.