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 November 06, 2018 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())