如何用for..of.. 遍历一个普通的对象?

如何用for..of.. 遍历一个普通的对象?

首先了解一下for..of..: 它是es6新增的一个遍历方法,但只限于迭代器(iterator), 因此普通的对象用for..of遍历
是会报错的。下面来讲明一下如何用for..of..遍历普通对象 😄es6

类数组对象

若是对象是一个类数组对象,那好办,用Array.from转成数组便可。数组

var obj = {
    0:'one',
    1:'two',
    length: 2
};
obj = Array.from(obj);
for(var k of obj){
    console.log(k)
}

非类数组对象

若是不是类数组对象,也有办法,添加一个[Symbol.iterator]属性,并指向一个迭代器便可。this

//方法一:
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);
}

总结

好了,到这里本文就结束了,你get到要点了吗,若是以为文章还能够,就点个关注,收藏,推荐(素质三连)吧 😄code

相关文章
相关标签/搜索