JavaScript生成器、函数*和数组方法forEach
我想使用forEach数组方法作为生成器内部的循环,而不是for 因此:JavaScript生成器、函数*和数组方法forEach,javascript,ecmascript-6,Javascript,Ecmascript 6,我想使用forEach数组方法作为生成器内部的循环,而不是for 因此: function* someFunction() { for (let i = 0; i < someArray.length; i++) yield someArray[i]; } 问题:在普通函数(如“forEach”)中不允许使用yield 所以,问题是:绕过这个问题的最佳和优雅的方式是什么 我想使用forEacharray方法作为生成器内部的循环,而不是for 不,你没有 你没有,因为你不能。这简直
function* someFunction() {
for (let i = 0; i < someArray.length; i++) yield someArray[i];
}
问题:在普通函数(如“forEach”)中不允许使用yield
所以,问题是:绕过这个问题的最佳和优雅的方式是什么
我想使用forEach
array方法作为生成器内部的循环,而不是for
不,你没有
你没有,因为你不能。这简直是不可能的。不要尝试
您可能想做的是缩短for
循环,使其更加简洁,尤其是当您已经有了数组或迭代器时
简单的解决方案是使用:
yield*
将迭代委托给您使用它的iterable,并且比尝试使用.forEach
要简洁得多
我想使用forEach
array方法作为生成器内部的循环,而不是for
不,你没有
你没有,因为你不能。这简直是不可能的。不要尝试
您可能想做的是缩短for
循环,使其更加简洁,尤其是当您已经有了数组或迭代器时
简单的解决方案是使用:
yield*
将迭代委托给您使用它的iterable,并且比尝试使用要简洁得多。forEach
是的,我这样做。这甚至是可能的
yield*某些数组不允许在回调函数中调用yield
但可以这样做:
yield someArray.map((a) => {
return function* (a){yield a}(a);
});
但这并不是我真正想要的(简化代码),所以可能不值得这么做。是的,我需要。这甚至是可能的
yield*某些数组不允许在回调函数中调用yield
但有可能这样做:
yield someArray.map((a) => {
return function* (a){yield a}(a);
});
但这并不是我真正想要的(简化代码),所以可能不值得这么做。为什么不使用(让某个数组的一个)来产生一个?(我假设您的真实案例比显示的更复杂,否则只需yield*someArray
)它更复杂,但可以在其中使用for
。这个想法只是为了简化代码。为什么不使用for(让某个数组的一个)生成一个?(我假设您的真实案例比显示的更复杂,否则只需yield*someArray
)它更复杂,但可以在其中使用for
。这个想法只是为了简化代码。
yield someArray.map((a) => {
return function* (a){yield a}(a);
});