阅读完整的ES6 Compatibility table。刚开始Set()

const set = new Set();
set.add('foo');
set.add('baz');

const iterator = set.values();
iterator.next(); // { value: "foo", done: false }
iterator.next(); // { value: "baz", done: false }

是否可以编写类似于iterator.next()的方法,但是它向后而不是向前迭代(即iterator.previous())?

最佳答案

values()返回一个迭代器对象,并且不可能向后进行迭代,因为JavaScript迭代器对象可以是无限的。例如,考虑一下

function * Counter() {
    "use strict";
    var i = 0;
    while (1) {
        yield i++;
    }
}

现在,您可以使用Counter()创建一个迭代器,并且该迭代器将永远不会结束。因此,通常,使用迭代器不是向后选择的。

如果非常需要backIterator之类的东西,则必须维护迭代器产生的值,然后根据next调用来回移动。

07-24 09:50
查看更多