一、用到 对象 转 Map
var obj = {
"a": 1,
"b": 2,
"c": 3
};
var map = new Map();
for(let key in obj){
map.set(key,obj[key]);
}
console.log(map);
for(let item of obj){
console.log(item)//报错
}
二、添加迭代器对象的方法
// 定义对象的迭 代器对象
var obj = {
"a": 1,
"b": 2,
"c": 3,
// 迭代器
[Symbol.iterator]() {
var index = 0;
let map = new Map();
// object 对象转 map
for(let key in this){
map.set(key,this[key]);
}
var Entries = [...map.entries()];
return {
next() {
if (index < map.size) {
//自定义要返回的数据形式
return {
value: Entries[index++],
done: false
}
}
return {
value: undefined,
done: true
}
}
}
}
}
for(let item of obj){
console.log(item)//就不会报错
}
三、生成器的方法
利用生成器 生成 迭代器对象。
生成器函数:
function * name{
yield 1;
}
- yeild 产出一个值,
- 调用next(),函数才执行
var obj = {
"a": 1,
"b": 2,
"c": 3,
[Symbol.iterator]:function*() {
var index = 0;
let map = new Map();
// object 对象转 map
for(let key in this){
map.set(key,this[key]);
}
var Entries = [...map.entries()];
for(let item of Entries){
yield Entries[index++];
}
}
}
for(let item of obj){
console.log(item)
}