我正在建立一个网格,其中新项目必须适合下一个可用位置。项目可以为3:2或2:3,网格为12列宽。

我如何重写此循环条件语句以删除硬编码限制并接受3:2或2:3(当前为x:3,y:2)的输入?

        const check = (
            !grid[rowY + 0][columnX + 0] &&  // @TODO: Hard coded limit
            !grid[rowY + 0][columnX + 1] &&  // @TODO: Hard coded limit
            !grid[rowY + 0][columnX + 2] &&  // @TODO: Hard coded limit
            !grid[rowY + 1][columnX + 0] &&  // @TODO: Hard coded limit
            !grid[rowY + 1][columnX + 1] &&  // @TODO: Hard coded limit
            !grid[rowY + 1][columnX + 2]     // @TODO: Hard coded limit
        );
        if (check) {
            openX = columnX;
            openY = rowY;
            found = true;
        }
        return found;


javascript - 用JavaScript重写动态条件语句-LMLPHP

最佳答案

您可以使用everysome数组方法。给定widthheight的值,您可以动态计算check,如下所示:

const check = !grid.slice(rowY, rowY + height).some( row =>
    row.slice(columnX, columnX + width).some(Boolean)
);

09-20 13:09