1var spiralMatrixIII = function (rows, cols, rStart, cStart) {2let output = [];3let r = rStart,4c = cStart;5let right = true,6down = false,7left = false,8up = false;9let steps = 1,10maxSteps = 2;1112while (output.length !== rows * cols) {13if (r >= 0 && c >= 0 && r < rows && c < cols) output.push([r, c]);14if (right) {15if (steps + 1 > maxSteps) {16(steps = 2), r++;17(right = false), (down = true);18} else c++, steps++;19} else if (down) {20if (steps + 1 > maxSteps) {21(steps = 2), c--;22(down = false), (left = true);23maxSteps++;24} else r++, steps++;25} else if (left) {26if (steps + 1 > maxSteps) {27(steps = 2), r--;28(left = false), (up = true);29} else c--, steps++;30} else if (up) {31if (steps + 1 > maxSteps) {32(steps = 2), c++;33(up = false), (right = true);34maxSteps++;35} else r--, steps++;36}37}3839return output;40};