题目链接
思路
首先要知道什么是 generator 函数,是 ES 6 引入的一种特殊函数,可以暂停执行和恢复执行
基本语法就是 使用 function* 并且使用 yield 字段 yield 字段可以委托给 另外一个 generator 函数
yield 字段代表 暂停 yield* 代表 委托
代码
javascript
/**
* @param {Array} arr
* @return {Generator}
*/
var inorderTraversal = function* (arr) {
for (const item of arr) {
if (Array.isArray(item)) {
yield* inorderTraversal(item)
}
else {
yield item
}
}
};
/**
* const gen = inorderTraversal([1, [2, 3]]);
* gen.next().value; // 1
* gen.next().value; // 2
* gen.next().value; // 3
*/