gpt4 book ai didi

javascript - 如何在 javascript 中克隆迭代器?

转载 作者:行者123 更新时间:2023-11-30 09:30:49 24 4
gpt4 key购买 nike

在 ES6 中,是否可以克隆迭代器状态?

var ma=[1,2,3,4];
var it=ma[Symbol.iterator]();
it.next();

如果我想在这里记住它说明我应该如何在 javascritp 中做?

里面记了什么?自从

JSON.stringify(it) //it would just return {}

最佳答案

您不能克隆任意迭代器,但可以通过保持某个状态从一个迭代器创建许多不同的迭代器:

function tee(iterable) {
const source = iterable[Symbol.iterator]();
const buffers = [[], []]; // substitute in queue type for efficiency
const DONE = Object.create(null);

const next = i => {
if (buffers[i].length !== 0) {
return buffers[i].shift();
}

const x = source.next();

if (x.done) {
return DONE;
}

buffers[1 - i].push(x.value);
return x.value;
};

return buffers.map(function* (_, i) {
for (;;) {
const x = next(i);

if (x === DONE) {
break;
}

yield x;
}
});
}

用法:

const [a, b] = tee(iterator);
assert(a.next().value === b.next().value);

关于javascript - 如何在 javascript 中克隆迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46416266/

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