Reputation: 8258
In ES6's Set next Property is available like
var mySet = new Set();
mySet.add("foobar");
mySet.add(1);
mySet.add("baz");
var setIter = mySet.entries();
console.log(setIter.next().value); // ["foobar", "foobar"]
How to navigate to the previous property, Is something like below is available?
console.log(setIter.previous().value);
Upvotes: 0
Views: 249
Reputation: 78535
Iterators do not have a previous function. You can however iterate using for..of
instead and keep track of the previous value:
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;
}
Then you can wrap in a function which returns a generator like so:
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);
}
Upvotes: 1