您能否比较多个变量以查看它们是否都等于 JS 中的相同值



在Javascript中工作,我试图查看5个不同的变量在给定时间是否都包含相同的值。 该值可能是 6 件事中的 1 件,但我需要查看它们是否都相同,无论它是哪个值。 我试过这个:

if (die1 == die2 & die1 == die3 & die1 == die4 & die1 == die5) {
    yahtzeeQualify == true;
}

而这个:

if (die1 == die2 == die3 == die4 == die5) {
    yahtzeeQualify == true;
}

这两种方法都有效吗? 如果是这样,我的代码可能在其他地方有错误......如果没有,我真的很感激一些帮助。 我在一个名为dieArray的数组中也有这些变量,如下所示:

var dieArray = [die1, die2, die3, die4, die5];

通过数组学习一种方法会很酷,但如果这不合逻辑,那就这样吧。 我会一直试图自己想办法,但直到现在我都被困住了......

这两种方法都有效吗?

它们是"有效的"(因为这是可执行代码),但它们不执行您想要的计算。您希望使用逻辑 AND ( && ) 而不是按位 AND。

第二个是错误的。您遇到类型强制问题,最终将die1truefalse进行比较。

通过数组学习一种方法会很酷

您可以使用Array#every并比较每个元素是否等于第一个元素:

if (dieArray.every(function(v) { return v === dieArray[0]; }))
// arrow functions make this nicer:
// if (dieArray.every(v => v === dieArray[0]))

使用 Array.Reduce 的解决方案:

var values = [die1, die2, die3, die4, die5];
var yahtzeeQualify = values.reduce(function(memo, element) {
   return element === values[0];
});

第一个是你想要的,但它搞砸了。你想要&&而不是&

第二个在逻辑上是错误的。

使用数组执行此操作

yahtzeeQualify = dieArray.every(function(n){ return n === dieArray[0] })

相关内容

  • 没有找到相关文章

最新更新