当前位置: 首页 > news >正文

遍历器 for...of 循环

for...of 作为遍历所有数据结构的统一的方法。但不能直接遍历对象,因为没有 Symbol.iterator (遍历器接口)

(所以可用 Object.keys( ) / Object.values( ) 去转一道,转成数组就可以用了。或者给obj [ Symbol.iterator ] = function( ){ ... })

 

ary.key( )  拿到数组的下标

value( )  拿到的是数组的每个值

entries( )  拿到的是:[ 下标,值 ]  这个样的一个形式的所有的数据。

 

Object.keys( ) 把对象的 key 值抽取出来放在数组中

Object.values( obj ) 把对象的 value 值抽取出来放在数组中

Object.entries( )  把key,value都抽出来,存到一个数组中

 

obj[Symbol.iterator] = function(){
  return{
    next:function(){
      return{
        value:传出去的值,
        done:false 没有遍历完 / ture 遍历完了
      }
    }
  }
}

 例子:

let obj = {name:'杰伦',age:18};

    obj[Symbol.iterator] = function(){
        let index = 0;
        let arr = Object.keys(obj);
        let len = arr.length;
        return {
            next(){
                if(index < len){
                    return {
                        value:{key:arr[index],val:obj[arr[index++]]},
                        done:false
                    }
                }else{
                    return {
                        value:1,
                        done:true
                    }
                }
            }
        }
    };

    for(let {key,val} of obj){
        console.log(key,val);
    }

不但能循环数组,还能循环 类数组 Set 和 Map 和 arguments 和 lis 数据结构

Set  去除数组重复项 [ ... new Set ( array ) ]

arr.forEach(function(e,i){ //没有返回值
  if(i==2){
    return // 条件满足就跳过,,,但是不能用break(跳出)
  }
})

 

转载于:https://www.cnblogs.com/MrZhujl/p/10103986.html

相关文章:

  • iOS开发实战之搜索控制器UISearchController使用
  • 饭卡
  • mysql索引原理与查询优化
  • protobuf中文教程(第一篇)
  • ASP.Net Core The type initializer for 'Gdip' threw an exception
  • js变量前的+是什么意思
  • ActiveMQ消息的消费原理
  • 下拉框搜索插件chosen
  • Vue -computed传参数
  • bzoj 2535 bzoj 2109 [Noi2010]Plane 航空管制——贪心
  • redis面试题集錦
  • 安卓创始人计划推出能帮你约会的AI手机
  • 2 -6 元祖
  • 中科大自主招生2018年笔试数学之四
  • 耄耋的三星,蹒跚的步履
  • [译]前端离线指南(上)
  • angular2开源库收集
  • bearychat的java client
  • github指令
  • Java读取Properties文件的六种方法
  • win10下安装mysql5.7
  • - 概述 - 《设计模式(极简c++版)》
  • 后端_ThinkPHP5
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 批量截取pdf文件
  • 漂亮刷新控件-iOS
  • 微信小程序设置上一页数据
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 运行时添加log4j2的appender
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • ​2020 年大前端技术趋势解读
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #Ubuntu(修改root信息)
  • #vue3 实现前端下载excel文件模板功能
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (正则)提取页面里的img标签
  • (转载)虚函数剖析
  • **PHP二维数组遍历时同时赋值
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 事件模型教程(二)
  • .Net接口调试与案例
  • .pop ----remove 删除
  • @GetMapping和@RequestMapping的区别
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [C++] Windows中字符串函数的种类
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态
  • [iOS]GCD(一)
  • [J2ME]url请求返回参数非法(java.lang.illegalArgument)
  • [Node.js]连接mongodb