如何用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

相關文章
相關標籤/搜索