gpt4 book ai didi

javascript - 比较 Object.values 数组不起作用

转载 作者:行者123 更新时间:2023-11-30 11:19:48 26 4
gpt4 key购买 nike

所以我正在制作一个井字游戏。这个数组是所有可能的获胜条件。

let array = [
{box1: "empty", box2: "empty", box3: "empty"},
{box1: "empty", box4: "empty", box7: "empty"},
{box1: "empty", box5: "empty", box9: "empty"},
{box2: "empty", box5: "empty", box8: "emtpy"},
{box3: "emtpy", box6: "emtpy", box9: "empty"},
{box3: "empty", box5: "empty", box7: "empty"},
{box4: "empty", box5: "empty", box6: "emtpy"},
{box7: "emtpy", box8: "empty", box9: "emtpy"}
];

下一段代码用于检查是否满足获胜条件。

for(let i = 0; i < array.length; i++){
if(Object.values(array[i]) === "o","o","o"){
console.log('o won');
} else if (Object.values(array[i]) === "x","x","x"){
console.log('x won');
} else if (Object.values(array[i]) === "empty","empty","empty"){
console.log('works as expected');
} else {
console.log('total fail');
}
}

当您运行它时,您会发现记录了“o won”。我很困惑为什么要这样做。 Object.values 返回一个数组。当我使用严格等于比较这些值时,它似乎仍然在检查每个值是否是一个字符串,而不是比较实际的字符串。

最佳答案

您的代码使用逗号运算符,它从左到右计算每个操作数并返回最后一个操作数。在下面的行中,最后一个操作数是“o”,一个非空字符串,当隐式转换为 bool 值时为真。因此,此表达式将始终为真:

if(Object.values(array[i]) === "o","o","o"){

逗号运算符:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator

要判断两个数组是否相等,可以使用如下函数:

function arraysEqual(a, b) {
return a.length == b.length && a.every(function(element, index) {
return element === b[index];
});
}

if (arraysEqual(myArray, ['x', 'x', 'x'])) {
// they're equal
}

关于javascript - 比较 Object.values 数组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224278/

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