2017-08-16 5 views
0

Das hat wahrscheinlich eine einfache Lösung, aber ich sehe es einfach nicht im Moment. Ich habe drei if-Klauseln, die basierend auf der Länge eines Arrays aktiviert werden sollten. Die ersten beiden scheinen gut zu funktionieren, aber aus irgendeinem Grund kann ich den dritten nicht aktivieren (arr.length === 3). Kurz vor den if-Klauseln habe ich eine Warnung ausprobiert, um zu testen, ob es die richtige Länge des Arrays gibt und es tut.Drittes if-Klausel kann nicht erreicht werden

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 || 1 'ist immer wahr. – Ivar

+0

Ich denke, das ist eine falsche Herangehensweise, die Sie nie die dritte erreichen werden, wenn überhaupt –

Antwort

7

Noch können Sie die zweite aktivieren.

Es ist ein Fehler hier: if (arr.length === 0 || 1) {

Die 1 wirft zu true.

Meinten Sie: if (arr.length === 0 || arr.length === 1) {

0

Sie müssen dies:

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

Die Art und Weise Sie es ausdrückte, es zu

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

gleich ist, die immer wahr ist.

0

Ich denke, was Sie suchen unter Bedingung ist, in der ersten, wenn die Bedingung

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

diese überprüft, ob die Länge des Arrays 1 ist oder es ist 0. Ihre erste, wenn die Bedingung immer wahr ist, wie es ist 1 was stimmt.

+0

Danke, mein Herr. Es funktioniert jetzt. Einen schönen Tag noch. –

+0

Sie sind willkommen .. Können Sie dies als Antwort markieren, wenn es Ihr Problem löst. – Niladri

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

ist immer wahr.

Sie könnten usethis statt

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