Iterator Join S3
中文标题:迭代器连接
提案概览
- 阶段: Stage 3
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
该提案旨在简化将任意可迭代对象的内容连接成字符串的操作。它引入了 Iterator.prototype.join,它与 Array.prototype.join 类似,但作用于迭代器,避免了中间分配或数组转换。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
迭代器连接
一个向 JavaScript 添加将迭代器的内容连接成字符串的方法的提案。
状态
作者:Kevin Gibbons
推动者:Kevin Gibbons
此提案处于 TC39 流程 的第 3 阶段:它已有 规范 和 test262 测试,并已准备好进行实现。
动机
将字符串列表连接成单个字符串以便显示或其他用途是一个非常 常见 操作。如果你有一个数组,那就很简单:只需调用 .join(sep)。如果你有任意其他可迭代对象,你可以执行 Iterator.from(it).reduce((a, b) => a + sep + b)(但要付出分配所有中间字符串的代价,而且这在空迭代器上会出错),或者 Array.from(it).join(sep)(但要付出将整个内容转换为数组的代价)。
我们应该让这变得更简单。
这是在 最初的迭代器辅助方法提案 中提出的,后来又在 Discourse 上讨论过。
提案
虽然原则上解决这个问题有多种方法,但最明显的是添加 Iterator.prototype.join,它的工作方式与 Array.prototype.join 完全相同,只不过它将其接收者作为迭代器而非数组来操作。这就是 当前规范的 内容。