您的位置:首页 > 健康 > 美食 > 迭代器Iterator

迭代器Iterator

2024/10/12 13:48:32 来源:https://blog.csdn.net/weixin_50236973/article/details/140829312  浏览:    关键词:迭代器Iterator
  // 有限迭代器function createArrayIterator(arr) {let index = 0;return {next() {if (index < arr.length) {return { done: false, value: arr[index++] }}return { done: true, value: undefined }}}}const names = ['a', 'b']const nums = [1, 2]const namesIterator = createArrayIterator(names);const numsIterator = createArrayIterator(nums);console.log(namesIterator.next());console.log(namesIterator.next());console.log(namesIterator.next());console.log(namesIterator.next());console.log(numsIterator.next());console.log(numsIterator.next());console.log(numsIterator.next());console.log(numsIterator.next());// 无限迭代器function createInfiniteArrayIterator() {let index = 0;return {next() {return { done: false, value: index++ }}}}const infiniteArrayIterator = createInfiniteArrayIterator();console.log(infiniteArrayIterator.next());console.log(infiniteArrayIterator.next());console.log(infiniteArrayIterator.next());console.log(infiniteArrayIterator.next());

  // 创建可迭代对象(什么是可迭代对象?)const iteratorObj = {names: ['a', 'b', 'c'],[Symbol.iterator]: function () {let index = 0;return {next: () => {if (index < this.names.length) {return { done: false, value: this.names[index++] }}return { done: true, value: undefined }}}}}const iterator = iteratorObj[Symbol.iterator]();console.log(iterator.next());console.log(iterator.next());console.log(iterator.next());console.log(iterator.next());console.log(iterator.next());// 此时iteratorObj是一个可迭代对象,像for of遍历的是一个可迭代对象,如果是普通对象({a: 1}),使用for of进行遍历时会报错for (const item of iteratorObj) {// 1. 输出的值其实是iterator.next().value// 2. 当done为true时, 停止遍历, 因此item的值只会输出a,b,cconsole.log(item);}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com