遍历器 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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值