Javascript 如何检查嵌套forLoop中的所有元素是否为false,并在变量中返回/存储答案?反应JS
我有一张5 x 5的桌子,上面有不同颜色的单元格。如果所有单元格都变成一种颜色,则用户“获胜” 表:Javascript 如何检查嵌套forLoop中的所有元素是否为false,并在变量中返回/存储答案?反应JS,javascript,reactjs,Javascript,Reactjs,我有一张5 x 5的桌子,上面有不同颜色的单元格。如果所有单元格都变成一种颜色,则用户“获胜” 表: const MainBoard = Array.from({length: this.props.nrows}).map((ignored, rowIndex) => ( <tr> {Array.from({length: this.props.ncols}).map((x, cellIndex) => ( <
const MainBoard = Array.from({length: this.props.nrows}).map((ignored, rowIndex) => (
<tr>
{Array.from({length: this.props.ncols}).map((x, cellIndex) => (
<Cell key={`${rowIndex}-${cellIndex}`}
isLit={this.state.board[rowIndex][cellIndex]}
flipCellsAroundMe={() => this.flipCellsAround(`${rowIndex}-${cellIndex}`)}
/>
))}
</tr>
));
return (
<table className="Board">
<tbody>
<h1>BOARD</h1>
{MainBoard}
</tbody>
</table>
);
}
提前感谢:)与数学中的求和一样,and(
&&
)具有关联性和交换性
这意味着,如果您在循环中重复更新您的
hasWon
,执行类似hasWon=hasWon&&!cellValue
,它将产生与检查每个单元格是否为假相同的结果。我不知道您在什么环境下使用它,但我以前做过类似的事情。基本上,您正在生成输出,但无法查看单元格的状态,对吗?
在这种情况下,我要做的是添加一个事件处理程序(可能是onClick),如下所示:
onclick(e){
let idOfElement = e.target.id;
let anyOtherAttribute = e.target.*anyOtherAtrribute*
}
此其他属性可以是的道具
你可以用这个。如果你不明白这个答案,请在下面随意评论,这样我可以帮助你解决类似以下问题:
const matrix = [
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
];
let won = true;
for(let i=0; i<matrix.length; i++) {
if(!won) {
break;
}
for( let j=0; j<matrix[i].length; j++) {
if(matrix[i][j]) {
won = false;
break;
}
}
}
console.log(won);
在嵌套循环中不使用
i
变量。myBoard
是平面阵列还是阵列阵列?对于数组数组,您需要参考myBoard[j][i]
,对于平面数组,您需要参考myBoard[j*myBoard.length+i]
。关于您最初的问题,可以从一个简单的例子开始,即如何确定2个布尔变量,然后是3个布尔变量的所有值都为假,然后尝试将其外推到嵌套循环。@IanWilsonmyBoard
是一个数组数组:(5)[数组(5),数组(5),数组(5),数组(5),数组(5)]0:(5)[假,假,真,真,真]1:(5)[真,假,假,假,真]2:(5)[假,假,假,假]3:(5)[假,真,假,假,假,假]4:(5)[false,false,true,false,false]
这是我想要的,但我也要好好看看它,看看它是怎么回事,为什么!为什么你要在第一个循环中检查Win是否为false?@Arthurubens只要我找到一个“true”值我从第二个循环中退出,然后我必须从第一个循环中退出。这就是我检查它的原因。要避免这种检查,可以使用while()控制,甚至转到。最后一个是最快的方法。好的,谢谢你的解释和代码帮助,我将写下:)嘿,我通过控制台知道单元格的状态。记录它们,但我只需要循环所有单元格,并返回它们是否都false
,如果单元格的调用等于false,则返回美国呃赢得了比赛!哦,就像电影里赌场里的那些东西一样。为了颜色。
const matrix = [
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
];
let won = true;
for(let i=0; i<matrix.length; i++) {
if(!won) {
break;
}
for( let j=0; j<matrix[i].length; j++) {
if(matrix[i][j]) {
won = false;
break;
}
}
}
console.log(won);
const matrix = [
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, false],
[false, false, false, false, true],
];
function hasWon(matrix) {
let won = true;
loops: for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j]) {
won = false;
break loops;
}
}
}
return won;
}
console.log(hasWon(matrix));
const won = matrix.join().indexOf('true') === -1