DFS + 染色版本
function numIslands(grid) {    if (!Array.isArray(grid)) {        return 0;    }    if (!Array.isArray(grid[0])) {        return 0;    }    let landNum = 0;    for (let i = 0; i < grid.length; i++) {        for (let j = 0; j < grid[0].length; j++) {            if (grid[i][j] === '1') {                landNum++;                dfs(grid, i, j)            }        }    }    return landNum;}function dfs(grid, i, j) {    let m = grid.length;    let n = grid[0].length;    let direction = [        [0, 1],        [0, -1],        [1, 0],        [-1, 0]    ];    if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] != '1') {        return;    }    grid[i][j] = '0';    for (let d = 0; d < direction.length; d++) {        dfs(grid, i + direction[d][0], j + direction[d][1]);    }}