2017-08-16 14 views
0

これはおそらく簡単な解決策を示していますが、現時点ではわかりません。 配列の長さに基づいて3つのif節をアクティブにする必要があります。最初の2つは正常に動作するようですが、何らかの奇妙な理由で3番目のものを起動できません(arr.length === 3)。 if節の直前で、配列の正しい長さを与えるかどうかをテストする警告を試みました。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 
      } 
     } 

    } 
+5

'arr.length === 0 ||をusethisことができ1 'は常に真です。 – Ivar

+0

私はそれが間違ったアプローチだと思いますが、とにかく場合は3番目に達することはありません –

答えて

7

第2をアクティブにすることはできません。

バグがここにあります:if (arr.length === 0 || 1) {

1trueにキャストします。

はおそらく、あなたは意味:

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

あなたがそれを置く方法、それは常に真である

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

に等しい:

0

if (arr.length === 0 || arr.length === 1) {あなたはこれが必要です。

0

私は、これは、配列の長さが1であるか、それが持っているなどの条件が常に真であるならば、それは0あなたの最初のかどうかチェックする条件

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

場合、あなたが探していることは最初に条件を下回っていると思います1これは本当です。

+0

ありがとうございます。それは今働く。良い一日を。 –

+0

あなたも大歓迎です...あなたの問題を解決すれば答えとしてマークすることができますか? – Niladri

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

は常にtrueです。

あなたが代わりに

if (arr.length <= 1) 
{ 
    return true; 
} 
関連する問題