Javascript 第三条“如果”条款无法达成

Javascript 第三条“如果”条款无法达成,javascript,arrays,if-statement,Javascript,Arrays,If Statement,这可能有一个简单的解决方案,但我现在根本看不到。 我有三个if子句,它们将根据数组的长度被激活。前两个似乎工作正常,但出于某种奇怪的原因,我无法激活第三个arr.length==3。就在if子句之前,我尝试了一个警报来测试它是否给出了正确的数组长度,并且它确实给出了 function calculateDistances() { var arr = []; arr.push(posM, posL, posR); alert(arr[1])

这可能有一个简单的解决方案,但我现在根本看不到。 我有三个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
            }
        }

    }

你也不能激活第二个

这里有一个bug:if arr.length==0 | | 1{

这一点是正确的

也许你的意思是:如果arr.length==0 | | arr.length==1{

你需要这个:

if (arr.length === 0 || arr.length === 1) {
按照你的说法,它等于

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

这总是正确的。

我想你要找的是在第一个if条件下的条件

if (arr.length === 0 || arr.length === 1) {
            return true;
  }
这将检查数组的长度是1还是0。第一个if条件始终为true,因为它的1为true

(arr.length === 0 || 1)
这永远是真的

你可以用这个来代替

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

arr.length==0 | | 1始终是正确的。我认为这是一种错误的方法。无论如何,如果你受到欢迎,你将永远不会到达第三个。如果它解决了你的问题,你能将此标记为答案吗。