mattingly890 mattingly890 - 1 year ago 141
Javascript Question

Iterate an array as a pair (current, next) in JavaScript

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 the same problem, but I'd like to do it in JavaScript in the cleanest way possible, perhaps using lodash.

It is easy to do this with a simple
loop, but it doesn't feel very elegant.

for (var i = 0; i < arr.length - 1; i++) {
var currentElement = arr[i];
var nextElement = arr[i + 1];

Lodash almost can do this:

_.forEach(,, function(tuple) {
var currentElement = tuple[0];
var nextElement = tuple[1];

The subtle problem with this that on the last iteration,
will be

Of course the ideal solution would simply be a
lodash function that only looped as far as necessary.

_.pairwise(arr, function(current, next) {
// do stuff

Are there any existing libraries that do this already? Or is there another nice way to do pairwise iteration in JavaScript that I haven't tried?

Clarification: If
arr = [1, 2, 3, 4]
, then my
function would iterate as follows:
[1, 2]
[2, 3]
[3, 4]
, not
[1, 2]
[3, 4]
. This is what the OP was asking about in the original question for Python.

Answer Source

Not sure why you want this but you can just make the "ugly" part on a function and then it looks nice:

arr = [1, 2, 3, 4];

function pairwise(arr, func){
    for(var i=0;i<arr.length-1;i++){
        func(arr[i], arr[i+1])

pairwise(arr, function(current,next){
    console.log(current, next)

You can even slightly modify it to be able to make iterate all i, i+n pairs, not just the next one:

function pairwise(arr, func,skips){
    skips = skips || 1;
    for(var i=0;i<arr.length-skips;i++){
        func(arr[i], arr[i+skips])

pairwise([1,2,3,4,5,6,7], function(current,next){
    console.log(current, next) // displays (1,3), (2,4), (3,5) , (4,6), (5,7)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download