我有一个数组如下:
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
。
有什么想法吗?
答案 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