iterator 作用是:将不支持遍历的数据解构"可遍历"
let courses = {
allCourse: {
frontend: ["ES", "小程序", "Vue"],
backend: ["java", "Python"],
webapp: ["android", "IOS"],
},
};
courses[Symbol.iterator] = function () {
let allCourse = this.allCourse;
let itemKey = Object.keys(allCourse);
let values = [];
return {
next() {
if (!values.length) {
if (itemKey.length) {
values = allCourse[itemKey[0]];
itemKey.shift();
}
}
return {
done: !values.length,
value: values.shift(),
};
},
};
};
for (let item of courses) {
console.log(item);
}
//打印内容
/*ES
小程序
Vue
java
Python
android
IOS*/
获取我们可以单独获取数组遍历再拼接。但是如果项目中用的比较多,每次都要走一遍逻辑。所以直接添加迭代器。这样直接for of就可以直接遍历出来