README
DOUBLE LINKED LIST
Breaking Change - Migrating to V1.0.0
Version 1.0.0 changed the way you instantiate for node. See the getting started section for more on how to get started. Also please see change log for deprecated methods.
Getting Started
This is a simple double linked list. It has some tests but still use discretion. You will have to create a new object to use it so for browsers...
var linkedList = new DoubleLinkedList()
and for node...
var DoubleLinkedList = require('double-linkedlist').DoubleLinkedList;
var linkedList = new DoubleLinkedList();
Changelog v1.0.0
- Updated documentation
- Updated build. Now includes minified version.
- Converted the build to UMD. As a result the instantiation process for node has changed.
- Cycle method has been removed. Please use Psychic method instead.
Table of Contents
DoubleLinkedList
Double Linked List
Meta
- author: Michael Montaque
onChange
Will trigger all the functions given to it when objects are added, removed or moved.
Parameters
func
function called when a change occurs
canUndo
determines if there are any more undo left
Returns boolean
undo
will undo the last modifying command
clearUndo
removes all the undo that the user can perform
isEmpty
is this data list empty?
Returns boolean
getSize
Returns the size of this list
Returns Number
insertAtStart
Inserts data at the start of the list
Parameters
insertAtEnd
Inserts data at the end of the list
Parameters
insertAtPosition
Inserts data at a specified position the list
Parameters
deleteAtPosition
removes a node at the specified position
Parameters
position
Number index of the node you want to remove
deleteAll
removes all the nodes
removeNode
removes a node at the specified position
Parameters
comparitor
Comparitor function that cycles through each element returning the node and index. The user must return true or false to indicate whether or not the node should be removed.isReversed
{Boolean} to cycle through the list in reverse
Examples
list.removeNode(function(node, idx){
return node.id === 4
},true)
getTail
Returns Object the node at the end of the list
getHead
Returns Object the node at the start of the list
move
moves the object
Parameters
oldIdx
Number the index of the object you want to movenewIdx
Number the index you want to move the old object to
psychic
cycles through each node and returns it along with the previous node, the next node and the index to the callback. To break free from the cycle the user can return false or let it run to the end
Parameters
callback
Psychic-Callback function that cycles through each element returning the node and index.isReversed
Boolean to cycle through the list in reverse
Examples
list.psychic(function(currentNode, previousNode, nextNode, idx){
// Do something with the node
// return true to keep going or false to stop
})
toArray
returns an array of the data
Returns Array the internal data as an array
findAll
removes a node at the specified position
Parameters
comparitor
(Comparitor | Object) function that cycles through each element returning the node and index. The user must return true or false to indicate whether or not the node should be removed. Or it can be an object and the method will find any node that matches the attribute's data
Examples
var array = list.findAll(function(node, idx){
return node.id === 4
})
var list = list.findAll({id:4})
Psychic-Callback
Type: Function
Parameters
currentNode
LinkNode The current node object in the listpreviousNode
LinkNode The previous node object in the listnextNode
LinkNode The next node object in the listidx
Number index of the object in the list
Returns boolean Optionally the user can return false to break free from the cycle early
Comparitor
Type: Function
Parameters
Returns boolean the user should return true any time a condition is met while comparing the node
Callback
Type: Function
Parameters
Returns boolean Optionally the user can return false to break free from the cycle early
LinkNode
class that represents the nodes that make up the list. Each of the node are referenced to at most two other nodes - a previous and a next.
Parameters
data
any object to storenextNode
a node to reference as nextpreviousNode
a node to reference as previous
getNext
returns the node that is after the node that called this method
Returns any LinkNode
getPrevious
returns the node that is before the node that called this method
Returns any LinkNode
setNext
takes a node object and sets it as the next node in the linked list
Parameters
obj
Node the node object you want to set as next
setPrevious
takes a node object and sets it as the previous node in the linked list
Parameters
obj
Node the node object you want to set as previous
hasNext
true if there is another node linked after the node that is caller of this method
Returns any Boolean
hasPrev
true if there is another node linked before the node that is caller of this method
Returns any Boolean
getProtectedData
Returns any Object
Meta
- deprecated: Will be removed by version 1.0.0. (Please use the getData data method instead)
appendData
allows you to set data in the internal object.
Parameters
data
Object the information you want to store the nodekey
String the property you want to store the data at
getDataForKey
getter for the internal data stored in the node
Parameters
key
String the attribute property name to access the data
setData
sets the internal data object
Parameters
data
Object the information you want to store the node