zoukankan      html  css  js  c++  java
  • 遍历器 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(跳出)
      }
    })
  • 相关阅读:
    国科大 高级人工智能 期末复习总结
    算法岗面试问题总结
    java如何判断溢出
    matrix67中适合程序员的例子
    java map
    tensorflow手写数字识别(有注释)
    epoch,iteration与batchsize的区别
    java中如何不自己写排序方法完成排序
    Kotlin实现《第一行代码》案例“酷欧天气”
    Kotlin入门第三课:数据类型
  • 原文地址:https://www.cnblogs.com/MrZhujl/p/10103986.html
Copyright © 2011-2022 走看看