gpt4 book ai didi

javascript - 如何反转迭代器的流程?

转载 作者:行者123 更新时间:2023-12-04 00:50:45 24 4
gpt4 key购买 nike

是否可以访问迭代器的前一个值,例如:

function* gen () {
yield* [0,1,2,3]
}

var it = gen();

it.next().value // 0
it.next().value // 1
it.last().value // would be awesome if this was 0

这完全是一个好奇心问题。我最近一直在玩生成器,想知道是否有人以这种方式使用生成器/迭代器?

如果是这样,我很乐意看到您的解决方案。 (不需要按照上面的语法)-谢谢

最佳答案

您可以将生成器包装在一个函数中,以保存以前的产量:

const wrapGenerator = gen => (...args) => {
const it = gen(...args);
let previous, current;
return {
next: () => {
const r = it.next();
previous = current;
current = r.value;
return r;
},
previous: () => ({ value: previous })
};
};

const gen = wrapGenerator(function * () {
yield * [0, 1, 2, 3];
});

const it = gen();

console.log(it.next().value);
console.log(it.next().value);
console.log(it.previous().value);

我将函数名称更改为 previous 以避免混淆(last 可能表示“最后一项”)。

关于javascript - 如何反转迭代器的流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com