yallist

中文文档
5.0.0发布于 2024/04/10BlueOak-1.0.0TypeScriptESM + CJS零依赖近 30 天下载 14.4亿

又一个链表

中文使用文档
文档目录5 节
  1. 基本用法
  2. api
  3. Yallist
  4. Yallist.create (. .)
  5. Yallist。节点

yallist

又一个链表

有很多类似的双链表实现,但是这个 一个是我的。

当数组太大,而Map不能迭代时 相反的顺序。

基本用法

import { Yallist } from 'yallist'
var myList = new Yallist([1, 2, 3])
myList.push('foo')
myList.unshift('bar')
// of course pop() and shift() are there, too
console.log(myList.toArray()) // ['bar', 1, 2, 3, 'foo']
myList.forEach(function (k) {
  // walk the list head to tail
})
myList.forEachReverse(function (k, index, list) {
  // walk the list tail to head
})
var myDoubledList = myList.map(function (k) {
  return k + k
})
// now myDoubledList contains ['barbar', 2, 4, 6, 'foofoo']
// mapReverse is also a thing
var myDoubledListReverse = myList.mapReverse(function (k) {
  return k + k
}) // ['foofoo', 6, 4, 2, 'barbar']

var reduced = myList.reduce(function (set, entry) {
  set += entry
  return set
}, 'start')
console.log(reduced) // 'startfoo123bar'

api

整个API被认为是“公共的”。

与Array方法同名的函数或多或少地工作于 同样的方式。

大多数事情都有相反的版本,因为这才是重点。

Yallist

默认导出,保存和管理列表的类。

使用forEach-able(如数组)或一组 参数,以初始化列表。

数组类方法的行为都与您所期望的一样。没有魔法长度, 但是,如果你改变了,它不会自动修剪或添加 空的地方。

Yallist.create (. .)

Yallist函数的别名。有些人喜欢工厂。

yallist.head

列表中的第一个节点

yallist.tail

列表中的最后一个节点

yallist.length

列表中的节点数。(如果改变,后果自负。它是 不像数组长度那么神奇。)

yallist.toArray ()

将列表转换为数组。

yallist。forEach (fn, [thisp])

对列表中的每个项目调用一个函数。

yallist。forEachReverse (fn, [thisp])

对列表中的每一项按相反顺序调用函数。

yallist.get (n)

获取位置上的数据 n 在列表中。如果你经常用这个, 也许最好使用数组。

yallist.getReverse (n)

获取位置上的数据 n从尾巴开始数。

yallist。thisp地图(fn)

使用调用函数的结果创建一个新的Yallist 项。

yallist。thisp mapReverse (fn)

一样 map,但反过来。

yallist.pop ()

从列表尾部获取数据,并从列表中删除尾部。

yallist。推动(项,…)

将一个或多个项目插入到列表的尾部。

yallist。initialValue减少(fn)

像Array.reduce。

yallist.reduceReverse

像数组。减少,但反过来。

yallist.reverse

把列表倒过来。

yallist.shift ()

从列表头获取数据,并从列表中删除列表头。

yallist。片([的],[])

就像Array一样。切片,但返回一个新的Yallist。

yallist。sliceReverse([的],[])

就像yallist一样。切片,但是返回的结果是相反的。

yallist。splice(start, deleteCount,…)

像Array.splice。

yallist.toArray ()

创建列表的数组表示形式。

yallist.toArrayReverse ()

创建列表的反向数组表示。

yallist。未(项,…)

将一个或多个项插入到列表的头部。

yallist.unshiftNode(节点)

将Node对象移动到列表的前面。(也就是说,把它拉出来 无论它住在哪里,让它成为新的头。)

如果节点属于不同的列表,那么该列表将删除它 第一。

yallist.pushNode(节点)

将Node对象移动到列表的末尾。(也就是说,把它拉出来 不管它住在哪里,把它变成新的尾巴。)

如果节点已经属于一个列表,那么该列表将删除它 第一。

yallist.removeNode(节点)

从列表中删除一个节点,保留head的引用完整性 尾部和其他节点。

将抛出一个错误,如果你试图让一个列表删除一个节点 不属于它。

Yallist。节点

保存数据的类,实际上是列表。

电话 const n = new Node(value, previousNode, nextNode)

请注意,如果您对节点本身进行直接操作,则非常 很容易进入列表被打破的奇怪状态。小心点:)

node.next

列表中的下一个节点。

node.prev

列表中的前一个节点。

node.value

节点包含的数据。

node.list

该节点所属的列表。(如果不属于,则为空) 任何列表。)

版本与发布记录

yallist 共发布 17 个版本,首次发布于 2015/12/18;过去 12 个月发布了 0 个版本。

版本发布日期距今
5.0.0latest2024/04/102 年前
4.0.02019/10/017 年前
3.1.12019/10/017 年前
3.1.02019/09/277 年前
3.0.32018/11/227 年前
3.0.22017/04/269 年前

关于 yallist 的常见问题

yallist 是什么?

又一个链表

如何安装 yallist?

在项目目录运行 npm install yallist,或使用 pnpm add / yarn add / bun add。

yallist 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

yallist 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

yallist 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

yallist 可以商用吗?

yallist 使用 BlueOak-1.0.0 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

yallist 的下载量有多少?

根据 npm 官方下载统计,yallist 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,443,675,565 次,日均约 48,122,519 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

yallist 还在维护吗?

最新版本 5.0.0 发布于 2024/04/10(2 年前);至今共发布 17 个版本,其中过去 12 个月发布了 0 个;首次发布于 2015/12/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。