# yallist 中文文档

规范地址：https://npmcn.com/package/yallist/

版本：5\.0\.0
npm 元数据更新时间：2024-04-09T19:21:45.008Z
中文译文更新时间：2026-11-04T11:29:40.782Z
软件包许可：BlueOak-1\.0\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/yallist
原文对照：https://npmcn.com/package/yallist/?lang=original
项目主页：https://github.com/isaacs/yallist#readme
源码仓库：https://github.com/isaacs/yallist

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：80.3 kB，13 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：0 个
- 首次发布：2015-12-18T08:02:25.789Z
- 最新版本发布：2024-04-09T19:21:44.844Z
- 近 30 天下载量：1443675565（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：17（近 12 个月 0 个）

## 中文简介

又一个链表

## 安装

```sh
npm install yallist
```

也可以使用：`pnpm add yallist`、`yarn add yallist`、`bun add yallist`

## README

# yallist

又一个链表

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

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

## 基本用法

```js
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 是什么？

又一个链表

### 如何安装 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 和提交记录判断。

