You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
16 KiB
16 KiB
一款参考 C++ STL 实现的 JavaScript 标准数据结构库
English | 简体中文
✨ 包含的数据结构
- Stack - 先进后出的堆栈
- Queue - 先进先出的队列
- PriorityQueue - 堆实现的优先级队列
- Vector - 受保护的数组,不能直接操作像
length
这样的属性 - LinkList - 非连续内存地址的链表
- Deque - 双端队列,向前和向后插入元素或按索引获取元素的时间复杂度为 O(1)
- OrderedSet - 由红黑树实现的排序集合
- OrderedMap - 由红黑树实现的排序字典
- HashSet - 参考 ES6 Set polyfill 实现的哈希集合
- HashMap - 参考 ES6 Set polyfill 实现的哈希字典
⚔️ 基准测试
我们和其他数据结构库进行了基准测试,在某些场景我们甚至超过了当前最流行的库
查看 benchmark 以获取更多信息
🖥 支持的平台
IE / Edge
|
Firefox
|
Chrome
|
Safari
|
Opera
|
NodeJs
|
Edge 12 | 31 | 49 | 10 | 36 | 10 |
📦 下载
使用 cdn 直接引入
- js-sdsl.js (for development)
- js-sdsl.min.js (for production)
使用 npm 下载
npm install js-sdsl
或者根据需要安装以下任意单个包
🪒 使用说明
您可以访问我们的主页获取更多信息
并且我们提供了完整的 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,阅读贡献者指南可能会有所帮助
贡献者
感谢对本项目做出贡献的开发者们:
Takatoshi Kondo 💻 ⚠️ |
noname 💻 |
本项目遵循 all-contributors 规范。 欢迎任何形式的贡献!
❤️ 赞助者
特别鸣谢下列赞助商和支持者们,他们在非常早期的时候为我们提供了支持:
同样感谢这些赞助商和支持者们: