What is js-sdsl?
The js-sdsl package is a JavaScript library that provides a variety of data structures and algorithms. It is designed to be efficient and easy to use, offering structures like vectors, lists, queues, stacks, and trees, as well as algorithms for sorting, searching, and other operations.
What are js-sdsl's main functionalities?
Vector
Vector is a dynamic array that can grow and shrink in size. It provides random access to elements, similar to an array.
const { Vector } = require('js-sdsl');
let vector = new Vector();
vector.pushBack(1);
vector.pushBack(2);
console.log(vector.size()); // Output: 2
LinkedList
LinkedList is a sequence of elements where each element points to the next. It allows for efficient insertion and removal of elements from any position.
const { LinkedList } = require('js-sdsl');
let linkedList = new LinkedList();
linkedList.pushBack(1);
linkedList.pushFront(0);
console.log(linkedList.front()); // Output: 0
Queue
Queue is a first-in-first-out (FIFO) data structure that allows for efficient addition of elements at the end and removal from the front.
const { Queue } = require('js-sdsl');
let queue = new Queue();
queue.push(1);
queue.push(2);
console.log(queue.front()); // Output: 1
Stack
Stack is a last-in-first-out (LIFO) data structure that allows for adding and removing elements from the top of the stack.
const { Stack } = require('js-sdsl');
let stack = new Stack();
stack.push(1);
stack.push(2);
console.log(stack.top()); // Output: 2
Tree
Tree structures like AVLTree are used to store data in a hierarchical manner. AVLTree is a self-balancing binary search tree.
const { AVLTree } = require('js-sdsl');
let tree = new AVLTree();
tree.insert(1);
tree.insert(2);
console.log(tree.find(1)); // Output: true
Other packages similar to js-sdsl
immutable
Immutable.js offers persistent immutable data structures. Unlike js-sdsl, which provides mutable structures, Immutable.js ensures that the data cannot be changed once created.
lodash
Lodash is a utility library that provides functions for common programming tasks, including manipulating and testing values, arrays, objects, and strings. It is more focused on utility functions than the data structure implementations provided by js-sdsl.
underscore
Underscore.js is a utility library similar to Lodash, offering a range of functions for working with JavaScript collections and arrays. It does not focus on providing data structures but offers many utilities for working with existing ones.
A javascript standard data structure library which benchmark against C++ STL
English | 简体中文
Included data structures
- Vector
- Stack
- Queue
- LinkList
- Deque
- PriorityQueue
- OrderedSet (using RBTree)
- OrderedMap (using RBTree)
- HashSet
- HashMap
Benchmark
We are benchmarking against other popular data structure libraries. In some ways we're better than the best library. See benchmark.
Supported platforms
- node.js (using commonjs)
- react/vue (using es5)
- browser (support most browsers)
Download
Download directly
Or install js-sdsl using npm
npm install js-sdsl
Usage
You can visit our official website to get more information.
To help you have a better use, we also provide this API document.
For browser
<script src="https://unpkg.com/js-sdsl/dist/umd/js-sdsl.min.js"></script>
<script>
const {
Vector,
Stack,
Queue,
LinkList,
Deque,
PriorityQueue,
OrderedSet,
OrderedMap,
HashSet,
HashMap
} = sdsl;
const myOrderedMap = new OrderedMap();
myOrderedMap.setElement(1, 2);
console.log(myOrderedMap.getElementByKey(1));
</script>
For npm
import { OrderedMap } from 'js-sdsl';
const { OrderedMap } = require('js-sdsl');
const myOrderedMap = new OrderedMap();
myOrderedMap.setElement(1, 2);
console.log(myOrderedMap.getElementByKey(1));
Build by source code
You can pull this repository and run yarn build
to rebuild this library.
Test
Unit test
We use jest library to write unit tests, you can see test coverage on coveralls. You can run yarn test:unit
command to reproduce it.
For performance
We tested most of the functions for efficiency. You can go to gh-pages/performance.md
to see our running results or reproduce it with yarn test:performance
command.
You can also visit here to get the result.
Maintainers
@ZLY201
Contributing
Feel free to dive in! Open an issue or submit PRs. It may be helpful to read the Contributor Guide.
Contributors
Thanks goes to these wonderful people:
This project follows the all-contributors specification. Contributions of any kind welcome!
License
MIT © ZLY201