3 Star 0 Fork 1

Gitee 极速下载/js-sdsl

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/js-sdsl/js-sdsl
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

js-sdsl logo

一款参考 C++ STL 实现的 JavaScript 标准数据结构库

NPM Version Build Status Coverage Status GITHUB Star NPM Downloads Gzip Size MIT-license GITHUB-language

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 36 49 10 36 10

📦 下载

使用 cdn 直接引入

使用 npm 下载

npm install js-sdsl

或者根据需要安装以下任意单个包

package npm size docs
@js-sdsl/stack NPM Package GZIP Size link
@js-sdsl/queue NPM Package GZIP Size link
@js-sdsl/priority-queue NPM Package GZIP Size link
@js-sdsl/vector NPM Package GZIP Size link
@js-sdsl/link-list NPM Package GZIP Size link
@js-sdsl/deque NPM Package GZIP Size link
@js-sdsl/ordered-set NPM Package GZIP Size link
@js-sdsl/ordered-map NPM Package GZIP Size link
@js-sdsl/hash-set NPM Package GZIP Size link
@js-sdsl/hash-map NPM Package GZIP Size link

🪒 使用说明

您可以访问我们的主页获取更多信息

并且我们提供了完整的 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

🛠 测试

单元测试

我们使用 karmamocha 框架进行单元测试,并同步到 coveralls 上,你可以使用 yarn test:unit 命令来重建它

对于性能的校验

我们对于编写的所有 API 进行了性能测试,并将结果同步到了 gh-pages/performance.md 中,你可以通过 yarn test:performance 命令来重现它

您也可以访问我们的网站来获取结果

⌨️ 开发

可以使用 Gitpod 进行在线编辑:

Open in Gippod

或者在本地使用以下命令获取源码进行开发:

$ 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,阅读贡献者指南可能会有所帮助

贡献者

感谢对本项目做出贡献的开发者们:

contributors

本项目遵循 all-contributors 规范。 欢迎任何形式的贡献!

❤️ 赞助者

特别鸣谢下列赞助商和支持者们,他们在非常早期的时候为我们提供了支持:

eslint logo

同样感谢这些赞助商和支持者们:

sponsors

backers

🎫 许可证

MIT © ZLY201

MIT License Copyright (c) 2021 Zilong Yao Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

众所周知,Javascript 并不像 C++ 或者 Java 这些语言一样拥有较为完善的数据结构库,Js 的相关体系十分匮乏,甚至不提供堆这样的常见对象 展开 收起
README
MIT
取消

发行版

暂无发行版

贡献者 (7)

全部

近期动态

2年多前创建了仓库
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
TypeScript
1
https://gitee.com/mirrors/js-sdsl.git
git@gitee.com:mirrors/js-sdsl.git
mirrors
js-sdsl
js-sdsl
main

搜索帮助