page contents

如何使用for…of遍历对象?

轩辕小不懂 发布于 2021-12-21 13:41
阅读 475
收藏 0
分类:WEB前端开发
  • js
  • 2704
    Nen
    Nen
    - 程序员

    for…of是作为ES6新增的遍历方式,允许遍历一个含有iterator接口的数据结构(数组、对象等)并且返回各项的值,普通的对象用for..of遍历是会

    报错的。

    如果需要遍历的对象是类数组对象,用Array.from转成数组即可。

    var obj = {

     0:'one',

     1:'two',

     length: 2

    };

    obj = Array.from(obj);

    for(var k of obj){

     console.log(k)

    }

    如果不是类数组对象,就给对象添加一个[Symbol.iterator]属性,并指向一个迭代器即可。

    var obj = {

     a:1,

     b:2,

     c:3

    };

    obj[Symbol.iterator] = function(){

     var keys = Object.keys(this);

     var count = 0;

     return {

     next(){

     if(count<keys.length){

     return {value: obj[keys[count++]],done:false};

     }else{

     return {value:undefined,done:true};

     }

     }

     }

    };

    for(var k of obj){

     console.log(k);

    }

    // 方法二

    var obj = {

     a:1,

     b:2,

     c:3

    };

    obj[Symbol.iterator] = function*(){

     var keys = Object.keys(obj);

     for(var k of keys){

     yield [k,obj[k]]

     }

    };

    for(var [k,v] of obj){

     console.log(k,v);

    }

    请先 登录 后评论