iterator(迭代器)

news/2024/7/10 22:39:48 标签: es6

一、概念

迭代器(iterator)是一种接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署iterator接口,就可以完成遍历操作。

  1. ES6创造了一种新的遍历命令 for…of 循环,iterator 接口主要供 for…of 消费
  2. 原生具备 iterator 接口的数据(可用for of 遍历)
const baobao = ['gucci','coach','lv']
//使用 for...of 遍历数组
//for(let v of baobao){
//     console.log(v)
//}
let iterator = baobao[Symbol.iterator]();

//调用对象的next方法
console.log(iterator.next());// gucci
console.log(iterator.next());// coach
console.log(iterator.next());// lv
console.log(iterator.next());// undefined

二、工作原理

  1. 创建带一个只针对对象,指向当前数据结构的起始位置
  2. 第一次调用对象next方法,指针自动指向数据结构的第一个成员
  3. 接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员
  4. 每调用next方法返回一个包含value和done属性的对象

注意:需要自定义遍历数据的时候,要想到迭代器
自定义遍历代码:

const obj = {
	name = 'yrq',
	hobby = [
		'吃法',
		'睡觉',
		'打媳妇'
	],
	[Symbol.iterator](){
		let index = 0
		let that = this
		return {
			next:function(){
				if(index < that.hobby.length){
					const result = { value: that.hobby[index], done: false }
					index++
					return result
				}else{
					return { value: undefined, done: true }
				}
			}
		}
	}
}

for(let item of obj){
	console.log(item)
}

http://www.niftyadmin.cn/n/1527172.html

相关文章

Linux: SR-IOV MR-IOV

文章目录参考是否可以在主机上 使用tcpdump抓VF 网口的数据包PF vs VFSR VS MRSR-IOVHow SR-IOV works如何查看是否enable sriov虚拟网卡与SR-IOV网卡的比较性能SR-IOV缺点支持SRIOV的网卡参考 Red Hat Enterprise Linux 8 Configuring and managing virtualization https://p…

Generator(生成器)

生成器其实就是一个特殊的函数 异步编程 纯回调函数 node fs ajax mongodb 函数代码的分隔符 案例一&#xff1a; function * sang(){yield 鹅鹅鹅;yield 曲项向天歌;yield 白毛浮绿水; } let iterator sang() console.log(iterator.next());//{value: 鹅鹅鹅, done: false} …

React组件props设置默认属性

1、通过静态属性设置props默认值 class LayOut extends Component {// 通过静态属性设置props默认值static defaultProps {isShowBack: true}render() {const { title, children, isSHowFooter, isShowBack } this.propsreturn (<div className"layout">&l…

Linux: MTU设置

文章目录 RFCMTU复杂的原因MTU=1300 的出现MTU 与 tlsMTU vs IP 分片MTU 最小值MTU 如果设置1500,IP包里的实际数据净荷是多数?内核里的mtu值存放在什么结构体里?4.18 的实现 ip6老的方法,2020年被拿掉了MTU值实际用来干什么?MTU 在link上设置的值为什么没有生效?ipv6 MT…

React中Children的作用

一、引入方式 import React, { Component, Children } from react二、API map Children.map 第一个参数为this.props.children Children.map 第二个参数为callbackcount – 用来统计当前组件子元素数量only – 用来验证当中子元素是否是唯一toArray – 用来把当前children给转…

React中自定义高阶组件的应用(HOC)

什么是HOC? HOC(Higher-order component)是一种React 的进阶使用方法&#xff0c;只要还是为了便于组件的复用。强调一点&#xff0c;HOC本身并不是 React API, 它就是一个方法&#xff0c;一个接收一个组件作为参数&#xff0c;返回一个增强的组件的方法。 什么时候使用HOC…

Linux: module实例

文章目录 书籍kernel 相关config如果gdb看debuginfo 版的*.ko.debugmodule的作用,用途sys文件系统blacklistmodule 参数位置相关命令insmod如果插入失败,需要看dmesg 日志。lsmod参数修改方法modinfomodprobeconfig删除失败Kernel 模块编译实例,不能用gcc 直接编译。概况示例…

react-router-dom中<Route/>的三种使用方式

有三种书写方式 1. <Route path"/home" component { Home }/> 2. <Route path"/home" render { () > {return <Home/>} }/> 3.<Route path"/home"><Home/></Route>每次路由切换都触发路由对应的组件重…