
新发布Jul 28, 2026
nuguard v0.8.8
用于验证智能体 AI 应用的开源仓库:红队测试、行为、供应链、静态分析
一款参考 C++ STL 实现的 JavaScript 标准数据结构库
English | 简体中文
✨ 包含的数据结构
- Stack - 先进后出的堆栈
- Queue - 先进先出的队列
- PriorityQueue - 堆实现的优先级队列
- Vector - 受保护的数组,不能直接操作像
length这样的属性 - LinkList - 非连续内存地址的链表
- Deque - 双端队列,向前和向后插入元素或按索引获取元素的时间复杂度为 O(1)
- OrderedSet - 由红黑树实现的排序集合
- OrderedMap - 由红黑树实现的排序字典
- HashSet - 参考 ES6 Set polyfill 实现的哈希集合
- HashMap - 参考 ES6 Set polyfill 实现的哈希字典
⚔️ 基准测试
我们和其他数据结构库进行了基准测试,在某些场景我们甚至超过了当前最流行的库
查看 benchmark 以获取更多信息
🖥 支持的平台
| ![][Edge-Icon] IE / Edge | ![][Firefox-Icon] Firefox | ![][Chrome-Icon] Chrome | ![][Safari-Icon] Safari | ![][Opera-Icon] Opera | ![][NodeJs-Icon] NodeJs |
|---|---|---|---|---|---|
| Edge 12 | 36 | 49 | 10 | 36 | 10 |
📦 下载
使用 cdn 直接引入
- js-sdsl.js (for development)
- js-sdsl.min.js (for production)
使用 npm 下载
npm install js-sdsl
或者根据需要安装以下任意单个包
| package | npm | size | docs |
|---|---|---|---|
| [@js-sdsl/stack][stack-package] | [![NPM Package][stack-npm-version]][stack-npm-link] | [![GZIP Size][stack-umd-size]][stack-umd-link] | [link][stack-docs] |
| [@js-sdsl/queue][queue-package] | [![NPM Package][queue-npm-version]][queue-npm-link] | [![GZIP Size][queue-umd-size]][queue-umd-link] | [link][queue-docs] |
| [@js-sdsl/priority-queue][priority-queue-package] | [![NPM Package][priority-queue-npm-version]][priority-queue-npm-link] | [![GZIP Size][priority-queue-umd-size]][priority-queue-umd-link] | [link][priority-queue-docs] |
| [@js-sdsl/vector][vector-package] | [![NPM Package][vector-npm-version]][vector-npm-link] | [![GZIP Size][vector-umd-size]][vector-umd-link] | [link][vector-docs] |
| [@js-sdsl/link-list][link-list-package] | [![NPM Package][link-list-npm-version]][link-list-npm-link] | [![GZIP Size][link-list-umd-size]][link-list-umd-link] | [link][link-list-docs] |
| [@js-sdsl/deque][deque-package] | [![NPM Package][deque-npm-version]][deque-npm-link] | [![GZIP Size][deque-umd-size]][deque-umd-link] | [link][deque-docs] |
| [@js-sdsl/ordered-set][ordered-set-package] | [![NPM Package][ordered-set-npm-version]][ordered-set-npm-link] | [![GZIP Size][ordered-set-umd-size]][ordered-set-umd-link] | [link][ordered-set-docs] |
| [@js-sdsl/ordered-map][ordered-map-package] | [![NPM Package][ordered-map-npm-version]][ordered-map-npm-link] | [![GZIP Size][ordered-map-umd-size]][ordered-map-umd-link] | [link][ordered-map-docs] |
| [@js-sdsl/hash-set][hash-set-package] | [![NPM Package][hash-set-npm-version]][hash-set-npm-link] | [![GZIP Size][hash-set-umd-size]][hash-set-umd-link] | [link][hash-set-docs] |
| [@js-sdsl/hash-map][hash-map-package] | [![NPM Package][hash-map-npm-version]][hash-map-npm-link] | [![GZIP Size][hash-map-umd-size]][hash-map-umd-link] | [link][hash-map-docs] |
🪒 使用说明
您可以访问我们的主页获取更多信息
并且我们提供了完整的 API 文档供您参考
想要查看从前版本的文档,请访问:
https://js-sdsl.org/js-sdsl/previous/v${version}/index.html
例如:
https://js-sdsl.org/js-sdsl/previous/v4.1.5/index.html
在浏览器中使用
<script src="https://unpkg.com/js-sdsl/dist/umd/js-sdsl.min.js"></script>
<script>
const {
Vector,
Stack,
Queue,
LinkList,
Deque,
PriorityQueue,
OrderedSet,
OrderedMap,
HashSet,
HashMap
} = sdsl;
const myOrderedMap = new OrderedMap();
myOrderedMap.setElement(1, 2);
console.log(myOrderedMap.getElementByKey(1)); // 2
</script>
npm 引入
// esModule
import { OrderedMap } from 'js-sdsl';
// commonJs
const { OrderedMap } = require('js-sdsl');
const myOrderedMap = new OrderedMap();
myOrderedMap.setElement(1, 2);
console.log(myOrderedMap.getElementByKey(1)); // 2
🛠 测试
单元测试
我们使用 karma 和 mocha 框架进行单元测试,并同步到 coveralls 上,你可以使用 yarn test:unit 命令来重建它
对于性能的校验
我们对于编写的所有 API 进行了性能测试,并将结果同步到了 gh-pages/performance.md 中,你可以通过 yarn test:performance 命令来重现它
您也可以访问我们的网站来获取结果
⌨️ 开发
可以使用 Gitpod 进行在线编辑:
或者在本地使用以下命令获取源码进行开发:
$ git clone https://github.com/js-sdsl/js-sdsl.git
$ cd js-sdsl
$ npm install
$ npm run dev # development mode
之后您在 dist/cjs 文件夹中可以看到在 dev 模式下打包生成的产物
🤝 贡献
我们欢迎所有的开发人员提交 issue 或 pull request,阅读贡献者指南可能会有所帮助
贡献者
感谢对本项目做出贡献的开发者们: