gpt4 book ai didi

javascript - 为什么 'o'是真的? JavaScript( Angular )

转载 作者:行者123 更新时间:2023-12-03 10:03:27 25 4
gpt4 key购买 nike

请帮帮我,我正在尝试为这个小游戏制定规则,但出现了问题。我正在创建获胜组合,并说如果 cell && cell+1 && cell+2 == 到“X”,那么您就赢了,但是当两个“X”之间出现“o”时,它也表示“X”获胜。为什么?请参阅底部链接上的我的代码和游戏示例。

this.rezult = function(){
this.arr2.forEach(function(arr, i, innerArr){
arr.forEach(function(val, j){
var wincomb = innerArr[i][j] && innerArr[i][j+1] && innerArr[i][j+2];
var wincomb2 = innerArr[i][j] && innerArr[i+1][j] && innerArr[i+2][j];
var wincomb3 = innerArr[i][j] && innerArr[i+1][j+1] && innerArr[i+2][j+2];

console.log(wincomb == "X" && innerArr[i][j] !== "o");
// console.log(innerArr);
// THE RULE

if(wincomb == "X"){
alert(' X wins!');
}
});
});
};

Link to JSFiddle

最佳答案

在 JavaScript 中,&& 运算符对于非 bool 值有有趣的行为。
如果&&左边为“true”,则结果为右边。
如果&&的左侧为“falsey”,则结果为左侧。

所有非空字符串都是“true”。

因此,请考虑以下示例:

("A" && "B" && "C") === "C"
("" && "B" && "C") === ""
(0 && "B" && "C") === 0
("X" && "X" && "O") === "O"
("O" && "O" && "X") === "X"

从表面上看,您正在尝试检查所有 3 个值是否相等。您不应该使用 && 来实现这一点,您应该使用 === 来实现这一点。

冒着为你做作业的风险;)这里有一个好方法:

function areTheSame(a,b,c) {
return a === b && b === c;
}
var down = areTheSame(innerArr[i][j], innerArr[i][j+1], innerArr[i][j+2]);
var across = areTheSame(innerArr[i][j], innerArr[i+1][j], innerArr[i+2][j]);
var diagonal = areTheSame(innerArr[i][j], innerArr[i+1][j+1], innerArr[i+2][j+2]);

if (down || across || diagonal) {
var winner = innerArr[i][j];
alert( winner + " wins!");
}

关于javascript - 为什么 'o'是真的? JavaScript( Angular ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30474483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com