【11月打卡】第75天 前端常用的7种设计模式(11)
2022/11/12 4:24:07
本文主要是介绍【11月打卡】第75天 前端常用的7种设计模式(11),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
迭代器(遍历器)在JS中的实际应用
- 用于for…of
- 解构、扩展运算符、Array.from
- 用于Promise.all和Promise.race
- yield *
for…of
有迭代器Iterator接口的有序结构都可以通过for…of来进行遍历
const str = "know"; for (let k of str) { console.log(k); // k n o w } const arr = [1, 2]; for (let k of arr) { console.log(k); // 1 2 } const set = new Set("abc"); for (let k of set) { console.log(k); // a b c } const map = new Map().set("name", "tom").set("age", 15); for (let k of map) { console.log(k); // [ 'name', 'tom' ] [ 'age', 15 ] }
解构、扩展运算符、Array.from
有迭代器Iterator接口的有序结构都可以使用上面的解构、扩展运算符、Array.from;有序结构作为参数,会调用默认的 Iterator 接口
const arr = [1, 2]; const [n1, n2] = arr; console.log(n1, n2); // 1 2 const str = "tom"; const [a, b, c] = str; console.log(a, b, c); // t o m const set = new Set().add(1).add("w").add(5); const [s1, s2] = set; console.log(s1, s2); // 1 w const map = new Map().set("name", "tom").set("age", 15); const newArr = [...map]; console.log(newArr); // [ [ 'name', 'tom' ], [ 'age', 15 ] ] const res = Array.from('hello'); console.log(res) // [ 'h', 'e', 'l', 'l', 'o' ]
Promise.all和Promise.race
Promise.all和Promise.race的参数不仅可以是数组,还可以是其他的有迭代器接口的有序结构
Generator生成器
- 基本使用
- yield * 语法
- yield遍历DOM
基本使用
生成器函数执行会生成一个迭代器
function* getResult() { yield 1; yield 2; yield 3; } const iterator = getResult(); for (let k of iterator) { console.log(k); }
yield * 语法
yield * 后面跟具有迭代器接口的有序结构
function* getResult() { yield* [1, 2, 3, 4]; yield* "abc"; } const iterator = getResult(); for (let k of iterator) { console.log(k); }
yield * 自定义迭代器
class GenIterator { constructor(data) { this.data = data; } *[Symbol.iterator]() { yield* this.data; } } const iterator = new GenIterator("7890"); for (let k of iterator) { console.log(k); // 7 8 9 0 }
yield遍历DOM
function* traverse(elementList) { for (let ele of elementList) { yield ele; if (ele.children) { yield* traverse(ele.children); } } } const container = document.getElementById("container"); for (let node of traverse([container])) { console.log(node); }
这篇关于【11月打卡】第75天 前端常用的7种设计模式(11)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21动态面包屑教程:新手入门指南
- 2024-12-21动态主题处理教程:新手必读指南
- 2024-12-21富文本编辑器教程:新手入门指南
- 2024-12-21前端项目部署教程:从零开始的全面指南
- 2024-12-21拖拽表格教程:轻松入门指南
- 2024-12-21Element-Plus教程:新手入门与实战指南
- 2024-12-21TagsView标签栏导航教程:轻松掌握标签栏导航
- 2024-12-21动态表格实战:新手入门教程
- 2024-12-21动态菜单项实战:一步步教你实现动态菜单项
- 2024-12-21动态面包屑实战:新手教程