npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

declarative-linked-list

v2.0.0

Published

All ypu need to work with linked lists in a declarative and intuitive way with higher order functions like sort, map, filter and reduce etc.

Downloads

19

Readme

Declartive Linked List

Declarative Linked List is a Node.js library that provides a straightforward and intuitive way to work with linked lists using higher-order functions. It allows you to manipulate linked lists in a declarative manner, making your code more concise and expressive.

Installation

You can install Declarative Linked List via npm:

npm install declarative-linked-list

Get Started:

const DoublyLinkedList = require('declarative-linked-list');

Create a new linked list.

const list = new DoublyLinkedList();

For manual operations.

list.head
list.tail
list.size
node.next
node.prev
node.data

Get size.

list.Size()
list.IsEmpty()

Prepend elements to the list.

list.Prepend(1);
list.PrependMany(2, 3, 4);

Append elements to the list

list.Append(3);
list.AppendMany(4, 5, 6);

Get a value by index.

const value = list.Get(3);

Print out the list in a readable format.

const display = list.PrintForward()
const display = list.PrintBackward()

Insert element at a specific index.

list.InsertAt(2, 10);

Delete the first element.

list.DeleteFirst();

Delete the last element.

list.DeleteLast();

Delete element at a specific index.

list.DeleteAt(2);

Copy the hole linked list or a portion of it by adding start and end index.

const copy = list.Copy();
const copyPortion = list.Copy(1, 3);

Reverse the linked list. Returns a copy of the linked list.

const reversed = list.Reverse();

Concatenate two linked lists

const list2 = new DoublyLinkedList();
list2.Append(5);
list.Concat(list2);

Convert the linked list to array or string.

const arr = list.ToArray();
const str = list.ToString();

Apply a function to each element in the list in place.

list.ForEach(x => x * 2);

Map each element in the list to a new value.

const mappedList = list.Map(x => x * 2);

Filter elements based on a condition.

const filteredList = list.Filter(x => x < 5);

Find the first occurrence of an element that satisfies a condition.

const found = list.Find(x => x === 3);

Find the last occurrence of an element that satisfies a condition.

const lastFound = list.FindLast(x => x === 3);

Find the index of the first occurrence of an element that satisfies a condition.

const index = list.FindIndex(x => x === 3);

Find the index of the last occurrence of an element that satisfies a condition.

const lastIndex = list.FindLastIndex(x => x === 3);

Reduce the elements of the list to a single value

const sum = list.Reduce((acc, curr) => acc + curr, 0);

Sort the elements of the list. It Determines the order by the values 1, 0 and -1. 1 as greater, -1 as smaller and 0 as equal.

  • Numbers
const sortedList = list.Sort((a, b) => a - b); 
  • Strings
const sortedList = list.Sort((a, b) => a.localeCompare(b));
  • Have fun with it, Here is an example of ordering according to card symbols.
const goalOrder = ['A', 'K', 'Q', 'J']
const sortedList = list.Sort((a, b) => goalOrder.indexOf(a) < goalOrder.indexOf(b) ? -1 : 1);

API Methods:

  • PrintForward(): Print out in a string format from the head.

  • PrintBackward(): Print out in a string format from the tail.

  • Size(): Get the size.

  • IsEmpty(): True or false.

  • Get(index): Returns a value by index.

  • Prepend(value): Inserts an element at the beginning of the list.

  • Append(value): Inserts an element at the end of the list.

  • PrependMany(...values): Inserts multiple elements at the beginning of the list.

  • AppendMany(...values): Inserts multiple elements at the end of the list.

  • InsertAt(index, value): Inserts an element at a specific index in the list.

  • DeleteFirst(): Deletes the first element of the list.

  • DeleteLast(): Deletes the last element of the list.

  • DeleteAt(index): Deletes the element at a specific index in the list.

  • Copy(): Copy the hole linked list.

  • Copy(startIndex, endIndex): Copies a portion of the list specified by the start and end indices.

  • Reverse(): Reverses the order of elements in the list.

  • Concat(otherList): Concatenates the current list with another list.

  • ForEach(callback): Applies a function to each element in the list.

  • Map(callback): Maps each element in the list to a new value using a function.

  • Filter(predicate): Filters elements based on a condition.

  • Find(predicate): Finds the first element that satisfies a condition.

  • FindLast(predicate): Finds the last element that satisfies a condition.

  • FindIndex(predicate): Finds the index of the first element that satisfies a condition.

  • FindLastIndex(predicate): Finds the index of the last element that satisfies a condition.

  • Reduce(callback, initialValue): Reduces the elements of the list to a single value.

  • Sort(compareFunction): Sorts the elements of the list using a compare function.

Contributing:

Contributions are welcome! If you have any suggestions, bug reports, or feature requests, please open an issue or submit a pull request on GitHub.

License

This project is licensed under the standard ISC License.

Feel free to customize the README further based on your preferences and additional information you'd like to include!