在 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 不包括高阶数组方法,例如 map
、reduce
等,因此您需要构建一个中间数组(或使用类似 wu.js 的库)。
您可以使用 spread operator从(有限)迭代器简洁地构建一个数组:
var sum = [...range(0, 10)].reduce((e, i) => e + i)
关于javascript - 将 ES5 数组方法与 ES6 生成器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541039/