zoukankan      html  css  js  c++  java
  • ES6 迭代器和for of

    for of遍历

    for (let 形参 of 数组){
    //...形参一般用item代表每一项
    }
    • 用法简单
    • 可跳出循环  continue  break
    • 没有索引值
      • for (let index of arr.keys()) { } 可获取索引
    • forEach()
      • 用法简单
      • 不可跳出循环
      • 有索引值
      • arr.forEach(function (valve, index) { //...  })
    • for(){}
      • 可以跳出循环
      • 可以拿到索引
      • 但是书写麻烦
    • for in 
      • 可以跳出循环
      • 可以拿到索引
      • 但是书写麻烦
      • 一般是用于遍历对象的,拿到索引是字符串,还需要转成数字
     

    iterator遍历器(迭代器)

    数组默认实现了迭代器,所以可以通过for of遍历
    Array[Symbol.iterator] 对应是一个函数,这个函数返回一个对象,对象中有个next方法,next方法返回一个对象
    {value:"",done:false}
    • value 这一项的值
    • done 是否遍历结束,true代表结束了


    对象没有实现迭代器,所以不能通过for of 遍历

    可以通过模拟实现

     1 var Obj = {
     2         'name': 'Hjcby',
     3         'age': '22',
     4         'trait': 'handsome'
     5     }
     6     Obj[Symbol.iterator] = function () {
     7         let index = 0;
     8         let keys = Object.keys(this);
     9         return {
    10             next: () => {
    11                 let value = {
    12                     key: keys[index],
    13                     value: this[keys[index]]
    14                 }
    15                 let done = keys[index] == this.length;
    16                 index++;
    17                 return {
    18                     value,
    19                     done
    20                 }
    21             }
    22         }
    23     }
    24     for (let v of Obj) {
    25         console.log(v);
    26     }
  • 相关阅读:
    Docker下安装redis
    Goodnotes5
    Notability
    浏览器好用的技术
    苹果平板上好用的软件推荐
    苹果平板爱思助手检验安兔兔
    积分超过排名的第一天
    卸载Windows控制面板的程序和功能中找不到的一些软件的方法
    怎样在GitHub上新建一个文件夹
    Vim的常用操作
  • 原文地址:https://www.cnblogs.com/hjcby/p/13612581.html
Copyright © 2011-2022 走看看