我正在建立一个网格,其中新项目必须适合下一个可用位置。项目可以为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;
最佳答案
您可以使用every
或some
数组方法。给定width
和height
的值,您可以动态计算check
,如下所示:
const check = !grid.slice(rowY, rowY + height).some( row =>
row.slice(columnX, columnX + width).some(Boolean)
);