Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/terkelg/zet
Set() as it should be.
https://github.com/terkelg/zet
difference intersection set set-theory sets union
Last synced: 15 days ago
JSON representation
Set() as it should be.
- Host: GitHub
- URL: https://github.com/terkelg/zet
- Owner: terkelg
- License: mit
- Created: 2018-09-01T19:42:32.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-04-29T17:02:45.000Z (over 4 years ago)
- Last Synced: 2024-10-12T17:56:35.146Z (about 1 month ago)
- Topics: difference, intersection, set, set-theory, sets, union
- Language: JavaScript
- Homepage:
- Size: 71.3 KB
- Stars: 521
- Watchers: 6
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
- awesome-list - zet
README
JavaScript Set() as it should be.
ECMAScript 6 sets have no methods for computing the union (∪), intersection (∩) or difference (⊖).
Zet is an extension of ES6 [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) and comes with all its functionality included with extra set logic.
The API is similar to how sets work in [Python](https://docs.python.org/2/library/stdtypes.html#set).## Features
Additions to the default ECMAScript 6 set
- Union (∪)
- Intersection (∩)
- Difference/subtract (-)
- Symmetric difference (⊖)
- Subset (⊆)
- Superset (⊇)
- Map
- Filter
- ReduceAdditionally, this module is delivered as:
* **ES Module**: `dist/zet.mjs`
* **CommonJS**: `dist/zet.js`
* **UMD**: `dist/zet.umd.js`## Install
```
$ npm install --save zet
```## Usage
```js
import Zet from 'zet';let a = new Zet([1, 2, 3]);
let b = new Zet([3, 4, 5]);
let c = new Zet([2, 3, 4]);Zet.union(a, b);
//=> [Zet] {1, 2, 3, 4, 5}a.union(b, c);
//=> [Zet] {1, 2, 3, 4, 5}a.intersection(b);
//=> [Zet] {3}a.symmetricDifference(c);
//=> [Zet] {1, 4}a.subset(b);
//=> falsea.filter(i => i % 2);
//=> [Zet] {1, 3}```
# API
## Zet([iterable])
Returns:`Zet`Returns the Zet instance.
**Zet extends [`Set()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) and inherit all its functionality, like `has()`, `size()` etc.**
### Zet.union(...sets) ∪
Returns:`zet`Static variadic function that return a new set with elements from all other `sets`.
#### sets
Type: `Zet|Set`Two or more sets of type `Zet` or `Set`.
### Zet.intersection(...sets) ∩
Returns:`zet`Static variadic function that return a new set with elements common to `this` and all other `sets`.
#### sets
Type: `Zet|Set`Two or more sets of type `Zet` or `Set`.
### Zet.difference(...sets) - or \\
Returns:`zet`Returns the difference between two or more sets. The order of the sets matters. Sets are differentiated against the first argument/set.
#### sets
Type: `Zet|Set`Two or more sets of type `Zet` or `Set`.
### Zet.symmetricDifference(setA, setB) ⊖ or ∆
Returns:`zet`Static function that return a new set with elements in either setA or setB but not both.
#### setA
Type: `Zet|Set`Set A of type `Zet` or `Set`.
#### setB
Type: `Zet|Set`Set B of type `Zet` or `Set`.
### Zet.subset(setA, setB)
Returns: `Boolean`Test whether every element in `setB` is in `setA`.
#### setA
Type: `Zet|Set`Set of type `Zet` or `Set`.
#### setB
Type: `Zet|Set`Set of type `Zet` or `Set`.
### Zet.superset(setA, setB)
Returns: `Boolean`Test whether every element in `setA` is in `setB`.
#### setA
Type: `Zet|Set`Set of type `Zet` or `Set`.
#### setB
Type: `Zet|Set`Set of type `Zet` or `Set`.
### map(set, func)
Returns: `Zet|Set`Creates a set with the results of calling the provided function on every element.
#### set
Type: `Zet|Set`Set of type `Zet` or `Set`.
#### func
Type: `Function`Function that produces an element of the new set.
### filter(set, func)
Returns: `Zet|Set`Creates a set with all elements that pass the test implemented by the provided function.
#### set
Type: `Zet|Set`
It is the set going to be examined.#### func
Type: `Function`It is a predicate, to test each element of the set.
### reduce(set, func, *initializer*)
Returns: `Number`Reduces the set to a single value, by executing the provided function for each element in the set (from left-to-right).
#### set
Type: `Zet|Set`Set of type `Zet` or `Set`.
#### func
Type: `Function`Function to be executed for each element in the set.
#### *initializer*
Type: `Number`Optional. A value to be passed to the function as the initial value.
## Instance Methods
### union(...sets) ∪
Returns:`zet`Variadic method that return a new set with elements from `this` and all other `sets`.
#### sets
Type: `Zet|Set`One or more sets of type `Zet` or `Set`.
### intersection(...sets) ∩
Returns:`zet`Variadic method that return a new set with elements common to `this` and all other `sets`.
#### sets
Type: `Zet|Set`One or more sets of type `Zet` or `Set`.
### difference(...sets) - or \\
Returns:`zet`Variadic method tht return a new set with elements in `this` that are not in the other `sets`.
#### sets
Type: `Zet|Set`One or more sets of type `Zet` or `Set`.
### symmetricDifference(other) ⊖ or ∆
Returns:`zet`Method that return a new set with elements in either `this` or `other` but not both. This is also known as xor.
#### other
Type: `Zet|Set`Set of type `Zet` or `Set`.
### subset(other)
Returns: `Boolean`Test whether every element in the set is in `other`.
#### other
Type: `Zet|Set`Set of type `Zet` or `Set`.
### superset(other)
Returns: `Boolean`Test whether every element in `other` is in the set.
#### other
Type: `Zet|Set`Set of type `Zet` or `Set`.
### map(func)
Returns: `Zet|Set`Creates a set with the results of calling the provided function on every element.
#### func
Type: `Function`Function that produces an element of the new set.
### filter(func)
Returns: `Zet|Set`Creates a set with all elements that pass the test implemented by the provided function.
#### func
Type: `Function`It is a predicate, to test each element of the set.
### reduce(func, *initializer*)
Returns: `Number`Reduces the set to a single value, by executing the provided function for each element in the set (from left-to-right).
#### func
Type: `Function`Function to be executed for each element in the set.
#### *initializer*
Type: `Number`Optional. A value to be passed to the function as the initial value.
## License
MIT © [Terkel Gjervig](https://terkel.com)