为什么比较三个数组元素返回false

时间:2017-07-06 00:40:36

标签: javascript jquery

我的问题可能听起来很愚蠢,但这是根本性的。我试图比较数组的元素,我得到的结果不准确。

$(document).ready(function(){
   var array =["a","a","a"]
   
   console.log(array[0]===array[1]===array[2])
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

为什么它会返回false?我该怎么做才能得到正确的结果?

3 个答案:

答案 0 :(得分:5)

让我们打破这个......

'a'==='a'==='a'
('a'==='a')==='a'
true==='a'
false

如果您想将数组中的多个元素与特定值进行比较,我建议使用every()方法:

&#13;
&#13;
var array = ['a', 'a', 'a'];

console.log(array.every((value) => value === 'a'));
&#13;
&#13;
&#13;

答案 1 :(得分:4)

array[0]===array[1]返回true。然后你基本上说true===array[2],这是假的。

你可以说array[0] === array[1] && array[0] === array[2]我认为它在逻辑上是相同的。

答案 2 :(得分:3)

问题原因:

由于:

a === b === c

与:

相同
(a === b) === c

因此,您将一个比较的结果(ab之间)(truefalse)与最后一项{{1}进行比较}}

<强>解决方案:

要比较这三个项目,请使用逻辑c运算符,如下所示:

and

使用逻辑a === b && b === c 检查and是否为a以及b是否等于b(或c是否为a等于c)。如果一个comparaison失败,那么整个测试失败,如果没有,那么这三个项目是相等的。