【问题标题】:Why is my last AND condition returning false in the if statement为什么我的最后一个 AND 条件在 if 语句中返回 false
【发布时间】:2017-07-26 14:22:25
【问题描述】:

我有一个数组如下:

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

有什么想法吗?

【问题讨论】:

  • 因为您在索引 3 处使用单引号而不是双引号
  • 抱歉,这只是一个错字。数组是动态生成的。更正了问题。
  • 为什么我的最后一个条件 temp[2] == temp[3] 返回 false? - 不,它没有。
  • 可能打印 temp0、temp1、temp2 和 temp3....
  • 您的数组的条件为真,并且 if 按预期工作。请发布可重现的代码。

标签: javascript arrays if-statement


【解决方案1】:

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

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

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

或使用 es6 集

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

【讨论】:

  • 就我而言,即使这样也返回 false :( 不过我喜欢你的回答。
  • 如果返回 false,则您的值不一样。检查隐藏/不可见字符或空格。 @VinodBhavnani
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2017-08-10
    • 2022-10-23
    • 1970-01-01
    • 2022-11-20
    • 2016-07-22
    • 2022-12-09
    相关资源
    最近更新 更多