
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
자바스크립트로 구현된 자료구조 라이브러리
npm install jsdsLib # local
npm install -g jsdsLib # global
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/jsdslib@1.2/dist/List.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/jsdsLib@1.2/dist/List.min.js"></script>
var List = require("jsdslib").List;
var list = new List();
console.log(list.toString()); // == document.writeln(list.toString());
[]
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]
[]
원소를 List 앞에서 부터 찾는다.
.find(item)
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
원소를 List 뒤에서 부터 찾는다.
.find_reverse(item)
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
원소를 List 맨 앞에 삽입한다.
.push_front(element)
var list = new List();
list.push_front(1);
list.push_front(2);
list.push_front(3);
console.log(list.toString());
[3, 2, 1]
List 맨 앞의 원소를 삭제한다.
.pop_front()
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
원소를 List 맨 뒤에 삽입한다.
.push_back(element)
var list = new List();
list.push_back(1);
list.push_back(2);
list.push_back(3);
console.log(list.toString());
[1, 2, 3]
List 맨 뒤의 원소를 삭제한다.
.pop_front()
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(element, item)
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(element, item)
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(item)
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]
두 List 를 합친다.
.merge(otherList)
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]
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']
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
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/jsdslib@1.2/dist/Queue.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/jsdsLib@1.2/dist/Queue.min.js"></script>
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]
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]
[]
Queue 가 비어있는지 검사한다.
.empty()
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
Queue 의 맨 앞 원소를 반환한다. (Queue 가 비어있으면 null 반환)
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.front());
1
Queue 의 맨 앞 원소를 반환한다. (Queue 가 비어있으면 null 반환)
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.back());
3
Queue 맨 뒤에 원소를 삽입한다. (.push()도 같은 기능을 한다.)
.enqueue(element)
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]
Queue 맨 앞의 원소를 삭제한다. (.pop()도 같은 기능을 한다.)
.dequeue()
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
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']
Queue 길이를 반환한다.
var q = new Queue();
q.enqueue(1);
q.enqueue(2);
q.enqueue(3);
console.log(q.length());
console.log(q.size());
3
3
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/jsdslib@1.2/dist/Stack.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/jsdsLib@1.2/dist/Stack.min.js"></script>
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]
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]
[]
Stack 이 비어있는지 검사한다.
.empty()
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
Stack 의 맨 뒤 원소를 반환한다. (Stack 이 비어있으면 null 반환)
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.peek());
3
Stack 맨 뒤에 원소를 삽입한다.
.push(element)
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.toString());
[1, 2, 3]
Stack 맨 뒤의 원소를 삭제한다.
.dequeue()
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
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']
Stack 길이를 반환한다.
var s = new Stack();
s.push(1);
s.push(2);
s.push(3);
console.log(s.length());
console.log(s.size());
3
3
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/jsdslib@1.2/dist/Deque.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/jsdsLib@1.2/dist/Deque.min.js"></script>
var Deque = require("jsdslib").Deque;
var dq = new Deque();
console.log(dq.toString()); // == document.writeln(dq.toString());
[]
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]
[]
Deque 이 비어있는지 검사한다.
.empty()
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
Deque 의 맨 앞 원소를 반환한다. (Deque 이 비어있으면 null 반환)
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.front().element); //해당 노드의 element 를 반환한다.
1
Deque 의 맨 뒤 원소를 반환한다. (Deque 이 비어있으면 null 반환)
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.back().element); //해당 노드의 element 를 반환한다.
3
Deque 맨 앞에 원소를 삽입한다.
.push_front(element)
var dq = new Deque();
dq.push_front(1);
dq.push_front(2);
dq.unshift(3);
console.log(dq.toString());
[3, 2, 1]
Deque 맨 앞의 원소를 삭제한다.
.pop_front()
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
Deque 맨 뒤에 원소를 삽입한다.
.push_back(element)
var dq = new Deque();
dq.push_back(1);
dq.push(2);
dq.enqueue(3);
console.log(dq.toString());
[1, 2 ,3]]
Deque 맨 앞의 원소를 삭제한다.
.pop_front()
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
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']
Deque 길이를 반환한다.
var dq = new Deque();
dq.push(1);
dq.push(2);
dq.push(3);
console.log(dq.length());
console.log(dq.size());
3
3
<-- Used jsdelivr cdn -->
<-- npm -->
<script src="https://cdn.jsdelivr.net/npm/jsdslib@1.2/dist/Priority_Queue.min.js"></script>
<-- Github -->
<script src="https://cdn.jsdelivr.net/gh/CODEMCD/jsdsLib@1.2/dist/Priority_Queue.min.js"></script>
var PriorityQueue = require("jsdslib").PriorityQueue;
PriorityQueue(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);
Priority Queue 을 초기화한다.
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
pq.clear();
console.log(pq.toString());
[]
Priority Queue 가 비어있는지 검사한다.
.empty()
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
Priority Queue 에 원소를 삽입한다.
.enqueue(element)
var pq = new PriorityQueue();
pq.enqueue(3);
pq.enqueue(2);
pq.enqueue(1);
console.log(pq.toString());
[1, 3, 2]
Priority Queue 에서 우선순위가 가장 높은 원소를 삭제한다.
.dequeue()
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
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']
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
FAQs
Javascript data structures library
We found that jsdslib demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.