JavaScript 生成器、函数* 和数组方法 forEach

标签 javascript ecmascript-6

我想使用 forEach 数组方法作为生成器内的循环,而不是 for

所以相反:

function* someFunction() {

  for (let i = 0; i < someArray.length; i++) yield someArray[i];

}

我想要这样的东西:

function* someFunction() {

  someArray.forEach((a) => {yield a});

}

问题:在普通函数(例如“forEach”)中不允许使用yield isn't

所以问题:绕过这个问题的最佳和优雅的方法是什么。

最佳答案

I want to use forEach array method as cycle inside generator instead of for.

不,你不知道。

你不这样做是因为你不能。这实际上是不可能的。不要尝试。

可能想要做什么来缩短for循环以使其更加简洁,尤其是当您已经有一个数组或迭代器时。

简单的解决方案是使用 yield* :

function* someFunction () {
  yield* someArray
}

yield* 会将迭代委托(delegate)给您使用它的可迭代对象,并且比尝试使用 .forEach 更加简洁。

关于JavaScript 生成器、函数* 和数组方法 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43336147/

相关文章:

javascript - 类型错误处理

javascript - 从框架调用主页上的功能

javascript - 为什么 Mocha/Chai 不将 babel 自定义错误与常规自定义错误一样对待?

javascript - ES6导入声明+符号

ecmascript-6 - Eslint-分配的胖箭头/属性初始化程序的 `Parsing error: unexpected token =`错误

javascript - es6扩展已经定义的类

javascript - 在 jquery 中每 5 秒添加 rotateY(36deg)

javascript - 如何在给定的 map 投影中执行 d3.svg.arc?

javascript - 使用 react Hook 隐藏和显示名称

javascript - ES6 : Call instance functions by their names