迭代器模式
2020/11/25 13:25:25
本文主要是介绍迭代器模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
迭代器模式
> 提供一种方法,可以顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示,就叫做迭代器模式。
> 绝大部分程序语言都内置了迭代器,比如 ES5 的 forEach
等,ES6 更是为 Array、Map、Set以及类数组对象提供了统一的迭代器接口,使用 for...of
循环便会默认调用该接口。
应用场景
> 由于绝大部分程序语言都内置了迭代器,所以我们没有必要去自己写一个,除非我们想要手动控制迭代的过程或顺序,用来满足更加多变的需求。
> 比如我们想要创建一个迭代器,能够访问数据集合的第一个、最后一个、前一个、后一个、当前这个、某一个以及倒序的功能。
例子:
const Iterator = (list) => { // 当前索引值,默认为第一个 let current = 0; // 第一个 const first = () => { return list[0]; }; // 最后一个 const last = () => { return list[list.length - 1]; }; // 前一个 const pre = () => { current -= 1; // 如果当前是第一个,则返回 undefined if (current < 0) { current = 0; return; } // 否则返回前一个 return list[current]; }; // 后一个 const next = () => { current += 1; // 如果当前是最后一个,则返回 undefined if (current === list.length) { current = list.length - 1; return; } // 否则返回后一个 return list[current]; }; // 当前这个 const cur = () => { return list[current]; }; // 某一个 const nth = (index) => { // 如果索引值在数组长度范围内,则返回相应值 if (index >= 0 && index < list.length) { return list[index]; } // 否则返回 undefined return; }; // 倒序 const reverse = () => { const _arr = []; for (let i = list.length - 1; i >= 0; i--) { _arr.push(list[i]); } return _arr; }; return { first, last, pre, next, cur, nth, reverse, }; }; // 测试代码 const arr = ['a', 'b', 'c', 'd']; const iterator = Iterator(arr); console.log(iterator.first()); // a console.log(iterator.last()); // d console.log(iterator.next()); // b console.log(iterator.next()); // c console.log(iterator.pre()); // b console.log(iterator.cur()); // b console.log(iterator.nth(3)); // d console.log(iterator.reverse()); // ["d", "c", "b", "a"]
如有错误,欢迎指正,本人不胜感激。
这篇关于迭代器模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求