JSFiddle - React, Tailwind, and code Playground

JavaScript

function getIslandAndSink(arr, x, y) {
    if (x < 0 || x >= arr.length || y < 0 || y >= arr[0].length) return 0;

    if (arr[x][y] !== "1") {   // not an island
      return 0;
    } else {
      arr[x][y] = ".";
      [-1, 1].forEach( delta => getIslandAndSink(arr, x + delta, y) );
      [-1, 1].forEach( delta => getIslandAndSink(arr, x, y + delta) );
      return 1;
    }
}

var numIslands = function(grid) {
    var i, j, count = 0;
    grid = grid.map( s => s.split("") )
    for (i = 0; i < grid.length; i++) {
        for (j = 0; j < grid[i].length; j++) {
            count += getIslandAndSink(grid, i, j)
        }
    }
    return count;
};

console.log(numIslands(["11110","11010","11000","00000"]));
console.log(numIslands(["11110","11010","11000","00001"]));
console.log(numIslands(["11110","11010","11000","00101"]));