2017-07-26 120 views
-4

我有一个数组如下:为什么是我最后的条件返回false if语句

var temp = ["5","5","5","5"]; 

这里是如果条件:

if((temp[0] == temp[1]) && (temp[1] == temp[2]) && (temp[2] == temp[3])){ 
    square++; 
} 

为什么是我的最后一个条件temp[2] == temp[3]返回false

当我检查控制台中这两个索引的值时,它们显示的是相等的,但条件本身返回false

任何想法?

+0

,因为你在指数三个而不是一个双引号 – ja08prat

+0

对不起一个单引号,即只是一个错字。数组正在动态生成。更正了这个问题。 –

+0

*为什么我最后的条件temp [2] == temp [3]返回false?* - 不,它不。 –

回答

0

您的代码正常工作。然而,检查您的阵列中的所有元素都是平等的,简单地使用。每

var temp = ["5","5","5","5"]; 
 

 
if (temp.every((e,i,arr) => e === arr[0])) { 
 
\t alert("all the same"); 
 
}

或使用ES6设置

var temp = ["5","5","5","5"]; 
 
if (new Set(temp).size === 1) alert("all the same");

+0

在我的情况下,即使这返回错误:(我喜欢你的答案,虽然 –

+0

如果返回false,你的值是不一样的检查隐藏/不可见的字符或空格@VinodBhavnani – baao

0

它可以如果temp[3]不存在,则返回false。所以如果你说动态生成数组,你有可能检查你的最后一个值是否等于不存在的值。

我的意思是,如果你的array.length = 4,你是手工测试,如果temp[3] == temp[4]

还检查值NaN作为NaN == NaN回报false

相关问题