Iterator Join S4
中文标题:迭代器 join
- 阶段: Stage 4
- 状态: 已完成
- ECMAScript 版本: ES2027
- 同步时间: 2026年10月11日
- English original · 官方仓库
该提案为 JavaScript 添加 Iterator.prototype.join,提供一种将迭代器内容连接为单个字符串的方式。该方法的行为与 Array.prototype.join 类似,但将其接收者作为迭代器而不是作为 Array 来操作。它解决了从可迭代来源连接字符串这一常见操作,无需将可迭代对象转换为 Array 或手动进行 reduce。
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
迭代器 join
一项提案,为 JavaScript 增加一种将迭代器内容连接为字符串的方法。
状态
作者:Kevin Gibbons
负责人:Kevin Gibbons
该提案目前处于 TC39 流程 的第 4 阶段:它已完成并包含在标准中。任何进一步的更改都需要通过常规流程在单独的提案中进行。本仓库已归档。
动机
将字符串列表连接成单个字符串以便显示或出于其他原因,是一项 非常 常见 操作。如果你有一个数组,这很简单:只需调用 .join(sep)。如果你有任何其他可迭代对象,你可以执行 Iterator.from(it).reduce((a, b) => a + sep + b)(并付出分配所有中间字符串的代价,此外这在空迭代器上会出错),或者执行 Array.from(it).join(sep)(并付出将整个内容转换为 Array 的代价)。
我们应该让这件事更容易。
这个问题在最初的迭代器辅助方法提案期间被提出,后来又出现在 Discourse 上。
提案
虽然原则上解决这个问题有多种方式,但显而易见的一种是添加 Iterator.prototype.join,其工作方式与 Array.prototype.join 完全相同,只是它将其接收者作为迭代器而不是作为 Array 来操作。这就是当前规范所规定的内容。