在ES6的设置下一个属性可用,如
var mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");
var setIter = mySet.entries();
console.log(setIter.next().value); // ["foobar", "foobar"]
如何导航到上一个属性,下面是否可以使用?
console.log(setIter.previous().value);
答案 0 :(得分:1)
迭代器没有以前的功能。但是,您可以使用for..of
进行迭代,并跟踪之前的值:
var mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");
let previous;
for(const current of mySet.entries()) {
console.log(previous, current);
previous = current;
}
然后你可以包装一个返回生成器的函数:
var mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");
const previousNextIterator = theSet => {
return {
previous: undefined,
*[Symbol.iterator]() {
for(const e of theSet.entries()) {
yield e;
this.previous = e;
}
}
};
};
const iter = previousNextIterator(mySet);
for(const current of iter) {
console.log(current, iter.previous);
}