자바 스크립트 데이터 구조 라이브러리
우선 순위 대기열, 임의의 키가있는 맵, 시도, 그래프 등과 같은 일부 기본 데이터 구조의 구현을 제공하는 JavaScript 라이브러리 / 라이브러리에 대한 권장 사항을 요청하고 싶습니다.
나는 주로 다음에 관심이 있습니다.
- 다루는 기능 세트,
- 솔루션의 유연성-이는 대부분 그래프에 적용됩니다. 예를 들어 제공된 그래프 구현을 사용해야합니까?
- 언어의 기능적 기능 사용-다시 한 번 더 큰 유연성을 제공합니다.
- 구현 성능
다음 데이터 구조를 JavaScript를 사용하여 구현할 수 있다는 것을 알고 있습니다.
- 키 값이 문자열 또는 숫자 인 경우 맵,
- 집합 (지도 구현 사용),
- 대기열은 아래에서 지적했듯이 일부 브라우저에서는 비효율적입니다.
현재 저는 주로 우선 순위 대기열 (일반 대기열과 혼동하지 말 것)에 관심이 있습니다. 그래프 구현은 입력 그래프의 형식에 그다지 방해가되지 않습니다. 예를 들어, 고정 된 이름을 가진 구체적인 속성에 액세스하는 대신 콜백을 사용하여 그래프의 구조를 탐색 할 수 있습니다.
Closure Library (특히 클로저 컴파일러 사용)를 사용하는 것이 좋습니다.
여기에 goog.structs 데이터 구조가있는 라이브러리가 있습니다 . 라이브러리에는 다음이 포함됩니다.
goog.structs.AvlTree
goog.structs.CircularBuffer
goog.structs.Heap
goog.structs.InversionMap
goog.structs.LinkedMap
goog.structs.Map
goog.structs.PriorityQueue
goog.structs.Set
예를 들어 단위 테스트를 사용할 수 있습니다 : goog.structs.PriorityQueueTest .
배열 작업이 필요한 경우 배열 lib : goog.array도 있습니다.
주석에서 언급했듯이 소스는 github.com/google/closure 로 이동 했으며 문서의 새 위치는 google.github.io/closure-library 입니다.
당신이 시도 할 수 양동이 포함하는 매우 완전한 자바 스크립트 데이터 구조 라이브러리입니다 :
- 연결된 목록
- 사전
- 다중 사전
- 이진 검색 트리
- 스택
- 열
- 세트
- 가방
- 바이너리 힙
- 우선 순위 대기열
아마도 여러분이 원하는 대부분은 어떤 식 으로든 Javascript에 내장되어 있거나 내장 기능과 쉽게 결합 될 수 있습니다 (네이티브 Javascript 데이터 구조는 매우 유연합니다). 당신은 JSClass를 좋아할 것 입니다.
언어의 기능적 특징에 관해서 는 underscore.js 가 있습니다.
임의의 키가있는 맵에 대해 도움을 드릴 수 있습니다. 내 jshashtable 이이 작업을 수행하고 그 위에 구축 된 해시 세트 구현도 있습니다.
효율적인 대기열 .
더 많은 것을 찾으면 jswiki에 추가해 주시겠습니까 ? 감사. :)
자바 스크립트가 애플리케이션에 있습니까, 아니면 웹 페이지에 있습니까? 애플리케이션 용이라면 데이터 구조를 Redis에 아웃소싱하지 않으 시겠습니까? 있다 nodejs에 대한 클라이언트
Redis는 오픈 소스의 고급 키-값 저장소입니다. 키에는 문자열, 해시, 목록, 집합 및 정렬 된 집합이 포함될 수 있으므로 데이터 구조 서버라고도합니다.
이 스레드에 대한 방문자의 향후 참조를 위해 우선 순위 대기열, 시도, 기본 그래프 처리 및 기타 구현을 제공하는 사용자 정의 자바 스크립트 라이브러리에 대한 링크 추가. dsjslib 확인
특히 그래프와 같은 구조의 경우 graphlib가 매우 편리합니다.
https://github.com/cpettitt/graphlib/wiki/API-Reference
내가 시도한 다른 구현보다 매우 간단하고 빠르며 모든 기본 기능, 인기있는 그래프 알고리즘 및 JSON 데이터 내보내기가 있습니다.
data.js .
나는 그것이 당신이 원하는만큼 풍부한 기능이라고 생각하지 않지만 그래프, 해시 및 컬렉션을 가지고 있습니다.
나는 이것을 당신이 확장 할 수있는 가벼운 시작이라고 생각한다.
그것이 제공하는 것에 관해서는 잘 작성되고 효율적이며 문서화되어 있습니다.
ReferenceURL : https://stackoverflow.com/questions/5909452/javascript-data-structures-library
'your programing' 카테고리의 다른 글
Mercurial 클론에서 작업 복사본을 제거하려면 어떻게해야합니까? (0) | 2020.12.25 |
---|---|
@dynamic은 Objective-C에서 무엇을합니까? (0) | 2020.12.25 |
Node.js Express 프레임 워크 보안 문제 (0) | 2020.12.25 |
GCC가 부동 소수점 표현식이 음수가 아닌 것으로 가정하도록 강제하는 방법은 무엇입니까? (0) | 2020.12.25 |
bcrypt보다 scrypt의 장점은 무엇입니까? (0) | 2020.12.25 |