linked-map
v2.2.2
Published
A linked map data structure
Downloads
649
Maintainers
Readme
linked-map
A linked map data structure for ordered iteration and fast random access.
Install
Node.js
$ npm install --save linked-map
Vanilla JavaScript
Copy the distribution linked-map.js file into your project files, and include it as per usual:
<script src="linked-map.js"></script>
Usage
> var LinkedMap = require('linked-map'); // Node.js
> var map = new LinkedMap();
> map.unshift('dogs', 2); // Add an entry to the front of the linked list
> map.unshift('monkeys', 1);
> map.push('cats', 4); // Add an entry to the end of the linked list
> map.push('dogs', 3); // Update an existing entry without changing entry order. Use remove() first to update and change order.
> map.get('dogs'); // Get the value for a key
3
> map.head(); // Get the first value in the linked list
1
> map.headKey(); // Get the first key in the linked list
'monkeys'
> map.tail(); // Get the last value in the linked list
4
> map.tailKey(); // Get the last key in the linked list
'cats'
> map.size(); // Get the number of entries stored
3
> map.keys(); // Get an in-order list of keys known to the structure
[ 'monkeys', 'dogs', 'cats' ]
> map.values(); // Get an in-order list of values known to the structure
[ 1, 3, 4 ]
> map.nextKey('cats'); // Get the key following the given key in the linked list, if any
null
> map.nextKey('cats', true /* circular */); // Get the key following the given key, wrapping to the front if at the end
'monkeys'
> map.previous('dogs'); // Get the value of the entry prior to the given key in the linked list, if any
1
> map.each(function(key, value) { // Iterate the entries in the linked list in order
console.log(key + ' = ' + value);
});
monkeys = 1
dogs = 3
cats = 4
> map.shift(); // Get and remove the first value in the linked list
1
> map.pop(); // Get and remove the last value in the linked list
4
> map.remove('dogs'); // Remove the entry for the specified key and return the value.
3
> map.clear(); // Remove all entries
Documentation
API documentation is available in the docs/
directory of the installed module directory.
Please see source code and unit tests for more details.
Contributing
Project source code is hosted on bitbucket: https://bitbucket.org/troykinsella/linked-map
Git repository: [email protected]:troykinsella/linked-map.git
Feel free to submit pull requests!
Reporting issues
Browse existing issues, and submit new issues here: https://bitbucket.org/troykinsella/linked-map/issues
Testing
Verify source code standards and run unit tests:
gulp test
Roadmap
- Minified vanilla JavaScript distributable
- Performance metrics
License
MIT © Troy Kinsella