无法达到第三个if子句

时间:2017-08-16 14:33:50

标签: javascript arrays if-statement

这可能有一个简单的解决方案,但我现在根本就没有看到它。 我有三个if子句,可以根据数组的长度激活。前两个似乎工作正常,但由于一些奇怪的原因,我无法激活第三个(arr.length === 3)。就在if子句之前,我已经尝试过一个警告,以测试它是否给出了正确的数组长度。

function calculateDistances() {
        var arr = [];

        arr.push(posM, posL, posR);
        alert(arr[1])
        for (var i = 0; i < arr.length; i++) {
            if (!arr[i]) {
                arr.splice(i,1)
            }
        }
        alert(arr.length)
        if (arr.length === 0 || 1) {
            return true;
        }
        else if (arr.length === 2 ) {
            var diameter = calculateDiameter(arr[0], arr[1])
            if (diameter > minDistance) {
                return false;
            }
            else {
                return true;
            }
        }
        else if (arr.length === 3) {
            alert("hello")
            var diameter1 = calculateDiameter(arr[0], arr[1]);
            var diameter2 = calculateDiameter(arr[0], arr[2]);
            var diameter3 = calculateDiameter(arr[1], arr[3]);

            if (diameter1 && diameter2 && diameter3 < minDistance) {
                return true
            }
            else{
                return false
            }
        }

    }

4 个答案:

答案 0 :(得分:7)

你也不能激活第二个。

这里有一个错误:if (arr.length === 0 || 1) {

1投射到true

也许你的意思是:if (arr.length === 0 || arr.length === 1) {

答案 1 :(得分:0)

你需要这个:

if (arr.length === 0 || arr.length === 1) {

你说的方式,它等于

if ((arr.length === 0) || true) {

总是如此。

答案 2 :(得分:0)

我认为你所寻找的是第一个if条件

的条件
if (arr.length === 0 || arr.length === 1) {
            return true;
  }

这将检查数组的长度是1还是0。您的第一个if条件始终为true,因为1为真。

答案 3 :(得分:0)

(arr.length === 0 || 1)

总是如此。

你可以改用

if (arr.length <= 1)
{
    return true;
}