如何⽤f..遍历⼀个普通的对象
如何⽤f.. 遍历⼀个普通的对象?
⾸先了解⼀下f..: 它是es6新增的⼀个遍历⽅法,但只限于迭代器(iterator), 所以普通的对象⽤f遍历是会报错的。下⾯来说明⼀下如何⽤f..遍历普通对象
数组对象
如果对象是⼀个类数组对象,那好办,⽤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
};
all for joy
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到要点了吗,如果觉得⽂章还可以,就点个关注,收藏,推荐(素质三连)吧