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 🙏

© 2025 – Pkg Stats / Ryan Hefner

jsdslib

v1.2.0

Published

Javascript data structures library

Readme

jsdsLib(javascript data structure Library)

  • Version: 1.2

자바스크립트로 구현된 자료구조 라이브러리

Link

Contents

라이브러리 설치

npm

npm install jsdsLib         # local
npm install -g jsdsLib      # global

List

  • 라이브러리 추가하기
  1. HTML
<-- Used jsdelivr cdn -->
<-- npm -->
 <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/List.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/[email protected]/dist/List.min.js"></script>
  1. npm
var List = require("jsdslib").List;
  • 초기화
var list = new List();
console.log(list.toString());     // ==  document.writeln(list.toString());
[]

.clear()

List 를 초기화한다.

  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());     // ==  document.writeln(list.toString());
list.clear();
console.log(list.toString());
[1, 2, 3]
[]

.find()

원소를 List 앞에서 부터 찾는다.

  • .find(item)
    • item: 찾을 노드
    • Return Value: 찾았다면 해당 노드, 찾지못했다면 null 반환
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.find(2).element);   //해당 노드의 element를 반환
console.log(list.find(4));
2
null

.find_reverse()

원소를 List 뒤에서 부터 찾는다.

  • .find_reverse(item)
    • item: 찾을 노드
    • Return Value: 찾았다면 해당 노드, 찾지못했다면 null 반환
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.find_reverse(2).element);   //해당 노드의 element를 반환
console.log(list.find_reverse(4));
2
null

.push_front()

원소를 List 맨 앞에 삽입한다.

  • .push_front(element)
    • element: 삽입할 원소
    • Return Value: 없음
  • 예제
var list = new List();
list.push_front(1);
list.push_front(2);
list.push_front(3);
console.log(list.toString());
[3, 2, 1]

.pop_front()

List 맨 앞의 원소를 삭제한다.

  • .pop_front()
    • Return Value: List 가 비어있으면 null, 비어있지 않으면 해당 노드 반환
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());
console.log(list.pop_front().element);
console.log(list.pop_front().element);
console.log(list.pop_front().element);
[1, 2, 3]
1
2
3

.push_back()

원소를 List 맨 뒤에 삽입한다.

  • .push_back(element)
    • element: 삽입할 원소
    • Return Value: 없음
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());
[1, 2, 3]

.pop_back()

List 맨 뒤의 원소를 삭제한다.

  • .pop_front()
    • Return Value: List 가 비어있으면 null, 비어있지 않으면 해당 노드 반환
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());
console.log(list.pop_back().element);
console.log(list.pop_back().element);
console.log(list.pop_back().element);
[1, 2, 3]
3
2
1

.insert()

원소를 해당 노드 뒤에 삽입한다.

  • .insert(element, item)
    • element: 삽입할 원소
    • item: 기준 노드
    • Return Value: item 을 찾지 못하면 null 반환
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());
list.insert(2.5, 2);
console.log(list.toString());
[1, 2, 3]
[1, 2, 2.5, 3]

.insert_prev()

원소를 해당 노드 앞에 삽입한다.

  • .insert_prev(element, item)
    • element: 삽입할 원소
    • item: 기준 노드
    • Return Value: item 노드를 찾지 못하면 null 반환
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());
list.insert_prev(2.5, 3);
console.log(list.toString());
[1, 2, 3]
[1, 2, 2.5, 3]

.remove()

해당 노드를 삭제한다.

  • .remove(item)
    • item: 삭제할 노드
    • Return Value: item 노드를 찾지 못하면 null, 찾으면 해당 노드 반환
  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());
list.remove(2);
console.log(list.toString());
[1, 2, 3]
[1, 3]

.merge()

두 List 를 합친다.

  • .merge(otherList)
    • otherList: 합칠 List 오브젝트
    • Return Value: otherList가 List 오브젝트가 아니라면 에러 반환
  • 예제
var list1 = new List();
list1.push_back(1);
list1.push_back(2);
list1.push_back(3);
console.log('list1: ', list1.toString());

var list2 = new List();
list2.push_back(4);
list2.push_back(5);
list2.push_back(6);
console.log('list2: ', list2.toString());

list1.merge(list2);
console.log('merged list1: ', list1.toString());
list1:  [1, 2, 3]
list2:  [4, 5, 6]
merged list1:  [1, 2, 3, 4, 5, 6]

.toString()

List 안의 전체 원소를 형식에 맞춰서 반환한다.

  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
list.push_back('Hello');
console.log(list.toString());
[1, 2, 3, 'Hello']

.length(), .size()

List 길이를 반환한다.

  • 예제
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.length());
console.log(list.size());
3
3

Queue

  • 라이브러리 추가하기
  1. HTML
<-- Used jsdelivr cdn -->
<-- npm -->
 <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/Queue.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/[email protected]/dist/Queue.min.js"></script>
  1. npm
var Queue = require("jsdslib").Queue;
  • 초기화 매개변수에 배열을 추가해서 초기화할 수 있다. 첫 번째 매개변수의 배열만 유효하고 나머지 매개변수는 무시한다.
//방법 1
var q = new Queue();
console.log(q.toString());       // ==  document.writeln(q.toString());

//방법 2
var q = new Queue([1, 2, 3]);
console.log(q.toString());
[]
[1, 2, 3]

.clear()

Queue 를 초기화한다.

  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.toString());
q.clear();
console.log(q.toString());
[1, 2, 3]
[]

.empty()

Queue 가 비어있는지 검사한다.

  • .empty()
    • Return Value: Queue 가 비어있으면 true, 비어있지 않으면 false 반환
  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.empty());
q.clear();
console.log(q.empty());
false
true

.front()

Queue 의 맨 앞 원소를 반환한다. (Queue 가 비어있으면 null 반환)

  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.front());
1

.back()

Queue 의 맨 앞 원소를 반환한다. (Queue 가 비어있으면 null 반환)

  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.back());
3

.enqueue(), .push()

Queue 맨 뒤에 원소를 삽입한다. (.push()도 같은 기능을 한다.)

  • .enqueue(element)
    • element: 삽입할 원소
    • Return Value: 삽입한 원소
  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.toString());
q.push(4);
q.push(5);
q.push(6);
console.log(q.toString());
[1, 2, 3]
[1, 2, 3, 4, 5, 6]

.dequeue(), .pop()

Queue 맨 앞의 원소를 삭제한다. (.pop()도 같은 기능을 한다.)

  • .dequeue()
    • Return Value: Queue 가 비어있으면 null, 비어있지 않으면 해당 원소 반환
  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.dequeue());
console.log(q.dequeue());
console.log(q.pop());
1
2
3

.toString()

Queue 안의 전체 원소를 형식에 맞춰서 반환한다.

  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
q.enqueue('Hello');
console.log(q.toString());
[1, 2, 3, 'Hello']

.length(), .size()

Queue 길이를 반환한다.

  • 예제
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.length());
console.log(q.size());
3
3

Stack

  • 라이브러리 추가하기
  1. HTML
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/Stack.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/[email protected]/dist/Stack.min.js"></script>
  1. npm
var Stack = require("jsdslib").Stack;
  • 초기화 매개변수에 배열을 추가해서 초기화할 수 있다. 첫 번째 매개변수의 배열만 유효하고 나머지 매개변수는 무시한다.
//방법 1
var s = new Stack();
console.log(s.toString());       // ==  document.writeln(s.toString());

//방법 2
var s = new Stack([1, 2, 3]);
console.log(s.toString());
[]
[1, 2, 3]

.clear()

Stack 을 초기화한다.

  • 예제
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.toString());
s.clear();
console.log(s.toString());
[1, 2, 3]
[]

.empty()

Stack 이 비어있는지 검사한다.

  • .empty()
    • Return Value: Stack 이 비어있으면 true, 비어있지 않으면 false 반환
  • 예제
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.empty());
s.clear();
console.log(s.empty());
false
true

.peek()

Stack 의 맨 뒤 원소를 반환한다. (Stack 이 비어있으면 null 반환)

  • 예제
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.peek());
3

.push()

Stack 맨 뒤에 원소를 삽입한다.

  • .push(element)
    • element: 삽입할 원소
    • Return Value: 삽입한 원소
  • 예제
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.toString());
[1, 2, 3]

.pop()

Stack 맨 뒤의 원소를 삭제한다.

  • .dequeue()
    • Return Value: Stack 이 비어있으면 null, 비어있지 않으면 해당 원소 반환
  • 예제
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.pop());
console.log(s.pop());
console.log(s.pop());
3
2
1

.toString()

Stack 안의 전체 원소를 형식에 맞춰서 반환한다.

  • 예제
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
s.push('Hello');
console.log(s.toString());
[1, 2, 3, 'Hello']

.length(), .size()

Stack 길이를 반환한다.

  • 예제
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.length());
console.log(s.size());
3
3

Deque

  • 라이브러리 추가하기
  1. HTML
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/Deque.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/[email protected]/dist/Deque.min.js"></script>
  1. npm
var Deque = require("jsdslib").Deque;
  • 초기화
var dq = new Deque();
console.log(dq.toString());       // ==  document.writeln(dq.toString());
[]

.clear()

Deque 을 초기화한다.

  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.toString());
dq.clear();
console.log(dq.toString());
[1, 2, 3]
[]

.empty()

Deque 이 비어있는지 검사한다.

  • .empty()
    • Return Value: Deque 이 비어있으면 true, 비어있지 않으면 false 반환
  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.empty());
dq.clear();
console.log(dq.empty());
false
true

.front()

Deque 의 맨 앞 원소를 반환한다. (Deque 이 비어있으면 null 반환)

  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.front().element);     //해당 노드의 element 를 반환한다.
1

.back()

Deque 의 맨 뒤 원소를 반환한다. (Deque 이 비어있으면 null 반환)

  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.back().element);     //해당 노드의 element 를 반환한다.
3

.push_front(), .unshift()

Deque 맨 앞에 원소를 삽입한다.

  • .push_front(element)
    • element: 삽입할 원소
  • 예제
var dq = new Deque();
dq.push_front(1);
dq.push_front(2);
dq.unshift(3);
console.log(dq.toString());
[3, 2, 1]

.pop_front(), .dequeue(), .shift()

Deque 맨 앞의 원소를 삭제한다.

  • .pop_front()
    • Return Value: Deque 이 비어있으면 null, 비어있지 않으면 해당 노드 반환
  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.pop_front().element);
console.log(dq.dequeue().element);
console.log(dq.shift().element);
1
2
3

.push_back(), .push(), .enqueue()

Deque 맨 뒤에 원소를 삽입한다.

  • .push_back(element)
    • element: 삽입할 원소
  • 예제
var dq = new Deque();
dq.push_back(1);
dq.push(2);
dq.enqueue(3);
console.log(dq.toString());
[1, 2 ,3]]

.pop_back(), .pop()

Deque 맨 앞의 원소를 삭제한다.

  • .pop_front()
    • Return Value: Deque 이 비어있으면 null, 비어있지 않으면 해당 노드 반환
  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.pop_back().element);
console.log(dq.pop_back().element);
console.log(dq.pop().element);
3
2
1

.toString()

Deque 안의 전체 원소를 형식에 맞춰서 반환한다.

  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
dq.push('Hello');
console.log(dq.toString());
[1, 2, 3, 'Hello']

.length(), .size()

Deque 길이를 반환한다.

  • 예제
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.length());
console.log(dq.size());
3
3

Priority Queue

  • 라이브러리 추가하기
  1. HTML
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/Priority_Queue.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/[email protected]/dist/Priority_Queue.min.js"></script>
  1. npm
var PriorityQueue = require("jsdslib").PriorityQueue;
  • 초기화 Priority Queue 는 최대 2개의 매개변수를 가질 수 있다.
  • PriorityQueue(arr, comp)
    • arr: 데이터가 담긴 배열
    • comp: 비교 함수, 설정하지 않으면 기본적으로 오름차순 정렬을 수행한다.
//비교 함수(내림차순)
var comp = function(a, b) {
    return a - b;
}

//방법 1, 매개변수 0개
var pq = new PriorityQueue();
//방법 2, 매개변수 1개(배열)
var pq = new PriorityQueue([2, 1, 3]);
//방법 3, 매개변수 1개(비교함수)
var pq = new PriorityQueue(comp);
//방법 4, 매개변수 1개(배열, 비교함수)
var pq = new PriorityQueue([2, 1, 3], comp);

.clear()

Priority Queue 을 초기화한다.

  • 예제
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
pq.clear();
console.log(pq.toString());
[]

.empty()

Priority Queue 가 비어있는지 검사한다.

  • .empty()
    • Return Value: Priority Queue 가 비어있으면 true, 비어있지 않으면 false 반환
  • 예제
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
console.log(pq.empty());
pq.clear();
console.log(pq.empty());
false
true

.enqueue(), .push()

Priority Queue 에 원소를 삽입한다.

  • .enqueue(element)
    • element: 삽입할 원소
  • 예제
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
console.log(pq.toString());
[1, 3, 2]

.dequeue(), .pop()

Priority Queue 에서 우선순위가 가장 높은 원소를 삭제한다.

  • .dequeue()
    • Return Value: Priority Queue 가 비어있으면 null, 비어있지 않으면 해당 노드 반환
  • 예제
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
console.log(pq.dequeue());
console.log(pq.dequeue());
console.log(pq.dequeue());
1
2
3

.toString()

Priority Queue 안의 전체 원소를 형식에 맞춰서 반환한다.

  • 예제
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
pq.enqueue('Hello');
console.log(pq.toString());
[1, 3, 2, 'Hello']

.length(), .size()

Priority Queue 길이를 반환한다.

  • 예제
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
console.log(pq.length());
console.log(pq.size());
3
3