JSFiddle - React, Tailwind, and code Playground

Iterator for a 2d array (grid). Allows iterating over all elements in every direction, one item at a time. Returned is index of current element (if all elements were in a continuous 1d array).

by Yurii Predborskyi

JavaScript

let nextIterator = function(len) {
  let i = 0;
  let arri = 0;
  let arr = [-1, -len, 1, len];
  return () => {
  	if (arri >= arr.length) {
    	i++;
      arri = 0;
    }
    return i + arr[arri++];
  }
};
let next = nextIterator(2);

console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())
console.log(next())