javascript - 将 ES5 数组方法与 ES6 生成器一起使用

标签 javascript ecmascript-6

在 ES6 生成器中使用新的 ES5 数组函数的正确方法是什么?我是否必须先将可迭代对象显式转换为数组,还是有更好的方法?例如:

function* range(low, high) {
    var i = low;
    while(i < high)
        yield i++;
}

// Sum of numbers in range, doesn't work
console.log(range(0, 10).reduce((x,y) => x + y));

最佳答案

生成器函数返回 Iterator对象。 Iterator API 不包括高阶数组方法,例如 mapreduce 等,因此您需要构建一个中间数组(或使用类似 wu.js 的库)。

您可以使用 spread operator从(有限)迭代器简洁地构建一个数组:

var sum = [...range(0, 10)].reduce((e, i) => e + i)

关于javascript - 将 ES5 数组方法与 ES6 生成器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541039/

相关文章:

javascript - 使用 JavaScript 下载 PDF 文件

javascript - 如果已经绑定(bind)了事件处理程序,则不要绑定(bind)

javascript - Array.prototype.push 上的 Object.defineProperty 不起作用

javascript - WeakMap 能让我避免父/子关系的内存泄漏吗?

arrays - 过滤器不会迭代数组中的所有元素。为什么?

javascript - ES6 - 基于两个键的不同元素

javascript - Graphql错误: "using last without before is not supported"

javascript - 外部 Javascript 超时

javascript - TypeScript - 元素隐式具有 'any' 类型,因为类型 'string' 的表达式不能用于索引类型

javascript - ES6 析构并获取值