碎片时间学编程「09」:使任何 JavaScript 值可迭代

JavaScriptSymbol.iterator 是一个非常强大的工具,每个 Web 开发人员都应该学习如何使用它。它允许您定义和自定义值的迭代方式,有效地使您可以使任何值可迭代。您可以轻松地将这些知识应用于纯 JavaScript 对象甚至类。

正确定义迭代器所需的只是生成每个迭代值的生成器函数JavaScriptSymbol.iterator是一个非常强大的工具,每个 Web 开发人员都应该学习如何使用它。它允许您定义和自定义值的迭代方式,有效地使您可以使任何值可迭代。您可以轻松地将这些知识应用于纯 JavaScript 对象甚至类。

正确定义迭代器所需的只是生成yield每个迭代值的生成器函数yield。这可用于检索对象中的键值对、从类中调用特定的 getter 函数或将数字拆分为数字数组。这可用于检索对象中的键值对、从类中调用特定的 getter 函数或将数字拆分为数字数组:

const obj = { a: 1, b: 2, c: 3 };

obj[Symbol.iterator] = function* () {

  for (let key of Object.keys(obj)) yield { [key]: obj[key] };

};

[...obj]; // [ { a: 1 }, { b: 2 }, { c: 3 }]

class IterableNumber extends Number {

  *[Symbol.iterator]() {

    for (let digit of [...`${this}`].map(d => Number.parseInt(d))) yield digit;

  }

}

const num = new IterableNumber(1337);

[...num]; // [ 1, 3, 3, 7]

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容