UNPKG

sangja

Version:

JavaScript data structures library

135 lines (108 loc) 4.08 kB
# sangja Sangja is javaScript data structures library. Implemented data structures provides interfaces similar to array, which is the native data structure of javascript. ## Installation ```Bash npm install sangja ``` ## Implemented Data Structures - [Optional](https://chacham.github.io/sangja/sangja.Optional.html) - [Stack](https://chacham.github.io/sangja/sangja.Stack.html) - [Queue](https://chacham.github.io/sangja/sangja.Queue.html) - [LinkedList](https://chacham.github.io/sangja/sangja.LinkedList.html) - [Heap](https://chacham.github.io/sangja/sangja.Heap.html) - [BinarySearchTree](https://chacham.github.io/sangja/sangja.BinarySearchTree.html) ## Document [https://chacham.github.io/sangja/](https://chacham.github.io/sangja/) ## Usage ```Javascript const sangja = require('sangja'); let some = new sangja.Optional(123); let none = new sangja.Optional(); some.getOrElse(22); // 123 none.getOrElse(22); // 22 let stack = new sangja.Stack(); stack.push(123); stack.pop(); // 123 let queue = new sangja.Queue(); queue.enqueue(456); queue.dequeue() // 456 let list = new sangja.LinkedList(); list.addLast(456); list.addFirst(123); list.addLast(789); list.get(0); // 123 list.get(1); // 456 list.getLast() // 789 let heap = new sangja.Heap(); heap.add(123); heap.pop(); // 123 let bst = new sangja.BinarySearchTree(); bst.addAll([3, 8, 2, 6, 4]); bst.includes(8); // true let otherBst = bst.map(v => {value: v}, { key: item => item.value }); ``` ## Method Summary Table ### Linear Data Structures Methods | Optional | Stack | Queue | LinkedList --- | --- | --- | --- | --- Implemented | O | O | O | O Constructor | `new Optional([value])` | `new Stack([iterable])` | `new Queue([iterable])` | `new LinkedList([iterable])` Add | - | `push(item)` | `enqueue(item)` | `add([index,]item)`, `addFirst(item)`, `addLast(item)` Add All | - | `pushAll(iterable)` | `enqueueAll(iterable)` | `addAll([index,]iterable)`, `addAllFirst(iterable)`, `addAllLast(iterable)` Read | `get()`, `getOrElse(item)` | `top()` | `peek()` | `get(index)`, `getFitst()`, `getLast()` Update | - | - | - | `set(index, value)` Delete with position | - | `pop()` | `dequeue()` | `pop([i])`, `popFirst()`, `popLast()`, `removeAt(i)` Delete with value | - | - | - | `remove(v)`, `removeFirst(v)`, `removeLast(v)`, `removeAll(v)` Delete with predicate | - | - | - | `removeMatch(f)`, `removeMatchFirst(f)`, `removeMatchLast(f)`, `removeMatchAll(f)` Delete All | - | `clear()` | `clear()` | `clear()` | - `find(f)` | - | - | - | O `findOptional(f)` | - | - | - | - `forEach(f)` | O | O | O | O `map(f)` | O | O | O | O `flatMap(f)` | O | O | O | O `filter(f)` | O | O | O | O `size()` | O | O | O | O `isEmpty()` | O | O | O | O `reversed()` | - | O | O | O `some(f)` | O | O | O | O `every(f)` | O | O | O | O `includes(v)` | O | O | O | O `[Symbol.iterator]` | O | O | O | O ### Tree Data Structures Methods | Heap | BinarySearchTree --- | --- | --- Implemented | O | O `Constructor` | `new Heap([iterable][,options])` | `new BinarySearchTree([iterable][,options])` Add | `add(item)` | `add(item)` Add All | `addAll(iterable)` | `addAll(iterable)` Read | `peek()` | `peek()` Update | - | - Delete | `pop()` | `pop()` Delete with value | - | `remove(v)` Delete with predicate | - | `removeMatch(f)` Delete All | `clear()` | `clear()` `find(f)` | O | O `findOptional(f)` | - | - `forEach(f)` | O | O `map(f[,options])` | O | O `flatMap(f[,options])` | O | O `filter(f[,options])` | O | O `size()` | O | O `isEmpty()` | O | O `reversed()` | O | O `some(f)` | O | O `every(f)` | O | O `includes(v)` | O | O `[Symbol.iterator]` | O | O `inorder([f])` | - | O `preorder([f])` | - | O `postorder([f])` | - | O `breadthFirst([f])` | O | O ## Contributing Sangja is open to any contributions made by the community. Reporting error, adding test cases, correcting typo, correcting inconsistent comments, fixing awkward sentence, and so on... are all good. ## Contact ccm0702@naver.com ## License Sangja is released under [MIT License](https://github.com/chacham/sangja/blob/master/LICENSE)