为什么我的最后一个AND条件在if语句中返回false

时间:2017-07-26 14:22:26

标签: javascript arrays if-statement

我有一个数组如下:

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

这是If条件:

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您的代码正常运行。但是,要检查数组中的所有元素是否相等,只需使用.every

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

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

或使用es6 Set

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

答案 1 :(得分:0)

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

我的意思是,如果您array.length = 4并且您正在手动测试temp[3] == temp[4]

同时检查NaN的值,NaN == NaN返回false