博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Javascript] Convert a forEach method to generator
阅读量:4984 次
发布时间:2019-06-12

本文共 1275 字,大约阅读时间需要 4 分钟。

For example we have a 'forEach' method which can loop though a linked list:

forEach(fn) {    let node = this.head;    let counter = 0;    while (node) {      fn(node, counter);      node = node.next;      counter++;    }  }

 

Test:

test('applies a transform to each node', () => {    const l = new List();    l.insertLast(1);    l.insertLast(2);    l.insertLast(3);    l.insertLast(4);    l.forEach(node => {      node.data += 10;    });    expect(l.getAt(0).data).toEqual(11);    expect(l.getAt(1).data).toEqual(12);    expect(l.getAt(2).data).toEqual(13);    expect(l.getAt(3).data).toEqual(14);  });

 

What if we want to use for...of loop? Then we need to convert LinkedList to support generator partten, the usage of for..of:

test('works with the linked list', () => {    const l = new List();    l.insertLast(1);    l.insertLast(2);    l.insertLast(3);    l.insertLast(4);    for (let node of l) {      node.data += 10;    }    expect(l.getAt(0).data).toEqual(11);    expect(l.getAt(1).data).toEqual(12);    expect(l.getAt(2).data).toEqual(13);    expect(l.getAt(3).data).toEqual(14);  });

 

Implementation:

*[Symbol.iterator]() {    let node = this.head;    while (node) {      yield node;      node = node.next;    }  }

 

转载于:https://www.cnblogs.com/Answer1215/p/11308356.html

你可能感兴趣的文章
四则运算*2
查看>>
《Linux就该这么学》 - 必读的红帽系统与红帽linux认证自学手册
查看>>
名句名篇
查看>>
图像的基本运算——scale, rotation, translation
查看>>
OpenCV——PS滤镜, 碎片特效
查看>>
python-字典相关函数认识
查看>>
Java之IO流
查看>>
Lua学习笔记-C API
查看>>
浅析:Android 嵌套滑动机制(NestedScrolling)
查看>>
Python+Selenium练习篇之18-获取元素上面的文字
查看>>
php状态模式
查看>>
Asp.net C# 图像处理
查看>>
知识签名(signature of knowledge)
查看>>
Gedit 解决中文显示乱码问题
查看>>
reset 单个文件 回退
查看>>
数据库系统
查看>>
ASP.NET Core 基础知识(九)Configuration
查看>>
pickle使用
查看>>
将多个网页制作成一个CHM文件
查看>>
txt 文件改名为fasta,并编辑规格格式
查看>>