你可以比较多个变量,看看它们在JS中是否都等于相同的值?

时间:2015-04-18 00:14:38

标签: javascript compare equals

在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];

通过数组学习一种方法是很酷的,但如果这不符合逻辑,那么就这样吧。我会继续尝试自己想办法,但直到现在我一直被卡住了......

3 个答案:

答案 0 :(得分:3)

  

其中任何一个都有效吗?

他们是有效的" (因为这是可执行代码)但他们没有执行你想要的计算。您想使用logical 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]))

答案 1 :(得分:1)

Solution with the Array.reduce:

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

var yahtzeeQualify = values.reduce(function(memo, element) {
   return element === values[0];
});

答案 2 :(得分:0)

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

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

用数组

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