11.迭代器

编程之家收集整理的这篇文章主要介绍了11.迭代器编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

迭代器

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

  1. ES6创造了一种新的遍历命令for...of循环,iterator接口主要供for...of消费

  2. 原生具备iterator接口的数据(可用for of遍历)

    a) Array

    b) Arguments

    c) Set

    d) Map

    e) String

    f) TypedArray

    g) NodeList

  3. 工作原理

    a) 创建一个指针对象,指向当前数据结构的起始位置

    b) 第一次调用对象的next方法,指针自动指向数据结构的第一个成员

    c) 接下来不断调用next方法,指针一直往后移动,直到指向最后一个成员

    d) 每调用next方法返回一个包含value和done属性的对象

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

//声明一个数组
const xiyou = ['唐僧','孙悟空','猪八戒','沙僧'];

//使用 for...of遍历数组
for(let v of xiyou){
	console.log(v);
}

let iterator = xiyou[Symbol.iterator]();

console.log(iterator);

//调用对象的next方法
console.log(iterator.next());//{value:'唐僧',done:false}
console.log(iterator.next());//{value:'孙悟空',done:false}
console.log(iterator.next());//{value:'猪八戒',done:false}
console.log(iterator.next());//{value:'沙僧',done:false}
console.log(iterator.next());//{value:undefined,done:true}

迭代器的应用

自定义遍历数据
//声明一个对象
const banji = {
    name:'终极一班',stus:[
        'xiaoming','xiaojia','xiaochen','xiaowang',],[Symbol.iterator](){
        //索引变量
        let index = 0;
        return {
            next:() => {
                if(index < this.stus.length){
                    return {value:this.stus[i],done:false};
                    //下标自增
                    index++;
                    //返回结果
                    return result;
                }else{
                    return {value:undefined,done:true};
                }
            }
        };
    }
    
}


//遍历这个对象
for(let v of banji){
    console.log(v);
    //xiaoming
    //xiaojia
    //xiaochen
    //xiaowang
}

// banji.stus.forEach();//

总结

以上是编程之家为你收集整理的11.迭代器全部内容,希望文章能够帮你解决11.迭代器所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的ES6相关文章

ES6转ES5(Babel转码器) 前提:必须在VScode中已经安装了Node.js 官网:https://nodejs.org/en/ 一、安装命令行转码工具 npm install --glob
Map介绍 ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map也实现了iterator接口,所以可以使用【扩展
Object.fromEntries //二维数组 const result = Object.fromEntries([ [&amp;#39;name&amp;#39;,&amp;#39;Study
扩展运算符 [...]扩展运算符能将【数组】转换为逗号分隔的【参数序列】 //声明一个数组 const tfboys = [&amp;#39;y&amp;#39;,&amp;#39;w&amp;#39
简化对象写法 ES6允许再大括号里面,直接写入变量和函数,作为对象的属性和方法。 遮眼法的书写更加简洁 let name = &amp;#39;study&amp;#39;; let change =
函数参数默认值 ES6允许给函数参数赋值初始值 //1.形参初始值 具有默认值的参数,一般位置要靠后(潜规则) function add(a,b,c=10){ return aʻʼ } let
数值扩展 //0. Number.EPSILON 是 JavaScript 表示的最小精度 EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16
ES6引入rest参数,用于获取函数的实参,用来替代arguments //ES5获取实参的方式 function date(){ console.log(arguments);//对象 } date
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注