In the question Iterate a list as pair (current, next) in Python, the OP is interested in iterating a Python list as a series of current, next
pairs. I have th
Here's my approach, using Array.prototype.shift
:
Array.prototype.pairwise = function (callback) {
const copy = [].concat(this);
let next, current;
while (copy.length) {
current = next ? next : copy.shift();
next = copy.shift();
callback(current, next);
}
};
This can be invoked as follows:
// output:
1 2
2 3
3 4
4 5
5 6
[1, 2, 3, 4, 5, 6].pairwise(function (current, next) {
console.log(current, next);
});
So to break it down:
while (this.length) {
Array.prototype.shift
directly mutates the array, so when no elements are left, length will obviously resolve to 0
. This is a "falsy" value in JavaScript, so the loop will break.
current = next ? next : this.shift();
If next
has been set previously, use this as the value of current
. This allows for one iteration per item so that all elements can be compared against their adjacent successor.
The rest is straightforward.