es6-迭代器生成器

简化循环

  • 生成器
     // 生成器函数名称前带个*
     // 函数表达式let createIterator = function *(items){}
     function *createIterator() {
         yield 1; //yield关键字不能往深度嵌套只能存在于构造器中 
         yield 2;
         yield 3;
     } // 这边同样可以以参数循环方式去构造
     // 生成器能像正规函数那样被调用,但会返回一个迭代器
     let iterator = createIterator();
     // next遍历
     console.log(iterator.next().value); // 1
     console.log(iterator.next().value); // 2
     console.log(iterator.next().value); // 3
    
  • 访问对象默认迭代器
     let values = [1, 2, 3];
     let iterator = values[Symbol.iterator]();
     // 然后就可以通过next方法来访问每一项
    
  • for-of循环
    这边主要是记录一下三种集合类型的用法:数组、Set、Map对象。
    entries() :返回一个包含键值对的迭代器;
    values() :返回一个包含集合中的值的迭代器;
    keys() :返回一个包含集合中的键的迭代器。
    数组对象键值为0起始,set对象键值就是value本身
    如果我们不声明迭代器会采取默认迭代器输出。
     let values = [1, 2, 3];
     for (let num of values) {
         console.log(num);
     }
     
     // 迭代器在for of中用法
     for (let each of values.entries()){
         console.log(each);
     }
    
    for of循环Map对象可以采用解构,同样可以实现比较方便的
     let data = new Map();
     data.set("title", "Understanding ES6");
     data.set("format", "ebook");
     // 与使用 data.entries() 相同
     for (let [key, value] of data) {
         console.log(key + "=" + value);
     }
    
  • 字符串迭代器
    for of循环去遍历字符串每一位,包括空格
  • NodeList 的迭代器
    NodeList为js获取DOM元素的集合,在es6中同样也可以使用for of去循环
     let divs = document.getElementsByTagName('div');
     for (div of divs){
         console.log(div.id);
     }
    

迭代器还有非常多的拓展功能继续深入了解可以看一下深入理解es6这本书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值