@bookbox/view-html
Version:
Bookbox view for html
56 lines (55 loc) • 1.23 kB
JavaScript
function getItem(data) {
return {
data,
next: null,
prev: null,
};
}
export function addTail(list, data) {
const item = getItem(data);
const oldTail = list.tail;
if (oldTail) {
oldTail.next = item;
item.prev = oldTail;
}
list.tail = item;
}
export function addHead(list, data) {
const item = getItem(data);
const oldHead = list.head;
if (oldHead) {
oldHead.prev = item;
item.next = oldHead;
}
list.head = item;
}
export function removeHead(list) {
const oldHead = list.head;
if (oldHead) {
const currentHead = oldHead.next;
if (currentHead) {
currentHead.prev = null;
}
list.head = currentHead;
}
}
export function removeTail(list) {
const oldTail = list.tail;
if (oldTail) {
const currentTail = oldTail.prev;
if (currentTail) {
currentTail.next = null;
}
list.tail = currentTail;
}
}
export function findItem(list, find) {
let current = list.head;
while (current !== null) {
if (find(current.data)) {
return current;
}
current = current.next;
}
return null;
}