Xeroooo: einfach JS Frage

Hallo

ich habe ne sicherlich einfache Frage...

Ich wollte nur mal wissen ob man mit der Fallunterscheidung auch Berreiche abfragen kann ... also zum beispiel > 1 oder so.

danke für die Antwort

  1. hi,

    Ich wollte nur mal wissen ob man mit der Fallunterscheidung auch Berreiche abfragen kann ... also zum beispiel > 1 oder so.

    switch(true) {
      case a > 5:
        ...;
        break;
      case a <= 5:
        ...;
        break;
    }

    sollte m.W. auch in javascript funktionieren.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Danke für die hilfe, jedoch kann man doch mit

      switch(true) {
        case a > 5:
          ...;
          break;
        case a <= 5:
          ...;
          break;
      }

      nur den berreich von unter 5 und den von gleich oder größer fünf abdecken, aber was is wenn ich nun auch noch genau die zahl 7 oder 1 haben will?`

      MFG Xeroooo

      1. hi,

        Danke für die hilfe,

        hast du's ausprobiert, bevor du dich bedankst? :-)
        switch lässt sich in einigen anderen sprachen derart verwenden - aber bei JS bin ich mir nicht sicher.

        jedoch kann man doch mit [...]
        nur den berreich von unter 5 und den von gleich oder größer fünf abdecken, aber was is wenn ich nun auch noch genau die zahl 7 oder 1 haben will?

        dann machst du dafür eigene cases - vor den "allgemeineren" natürlich.
          case a==7:
            ...;
            break;
          case (a==1 || a==4711):
            ...;
            break;

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. hallo,

        dann schreib case 7: und case 1: VOR die übigen anweisungen..
        ein wenig denkarbeit musst du schon selbst erbringen.

        grüße Chris

        1. Hallo Chris

          dann schreib case 7: und case 1: VOR die übigen anweisungen..
          ein wenig denkarbeit musst du schon selbst erbringen.

          Nein, bei wahsagas Variente müsste eher
          case a == 7: und case a == 1: eingefügt werden.

          Auf Wiederlesen
          Detlef

          --
          - Wissen ist gut
          - Können ist besser
          - aber das Beste und Interessanteste ist der Weg dahin!
    2. switch(true) {
        case a > 5:
          ...;
          break;
        case a <= 5:
          ...;
          break;
      }

      wahsaga,
      Gibt es irgendeinen vernünftigen Grund, if (a > 5) ... else ...; in dieser von dir vorgestellten Form zu notieren?

      Live long and prosper,
      Gunnar

      --
      „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
      1. hi,

        Gibt es irgendeinen vernünftigen Grund, if (a > 5) ... else ...; in dieser von dir vorgestellten Form zu notieren?

        zum beispiel, wenn's viele ähnliche bedingungen sind, du keine lust hast if/elsif/else drei meter weit nach rechts ragend zu verschachteln.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. zum beispiel, wenn's viele ähnliche bedingungen sind, du keine lust hast if/elsif/else drei meter weit nach rechts ragend zu verschachteln.

          wahsaga,
          Dann rück halt nicht ein. ;-) SCNR.

          IMHO ist switch(true) ein Missbrauch der switch-Anweisung und kein guter Stil.

          Live long and prosper,
          Gunnar

          --
          „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
          1. hi,

            IMHO ist switch(true) ein Missbrauch der switch-Anweisung und kein guter Stil.

            ja, magst recht haben ... aber wenner doch genau danach fragt ...? :-)

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. ja, magst recht haben ... aber wenner doch genau danach fragt ...? :-)

              wahsaga,
              Hatter doch gar nicht. Er fragte nach „Fallunterscheidung“, und IF-THEN-ELSE ist auch eine.

              Live long and prosper,
              Gunnar

              PS. Wer hat sich da bei der Bewertung meines Postings vertippt? >:-/

              --
              „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
              1. hi,

                Hatter doch gar nicht. Er fragte nach „Fallunterscheidung“, und IF-THEN-ELSE ist auch eine.

                streitbare these :-)

                selfhtml nennt nur den switch "fallunterscheidung", und auch wenn man mal nach fallunterscheidung googlet, kommen da solche definitionen raus wie:

                http://www.bullhost.de/f/fallunterscheidung.html:
                "Bei dem EDV Begriff Fallunterscheidung handelt es sich um eine Kontrollstruktur, welche die weitere Abarbeitung eines Programms von einer Bedingung abhängig macht. Bei der Fallunterscheidung können beliebig viele zu vergleichende Bereiche angegeben werden, zum Beispiel können in Abhängigkeit davon, ob eine Variable den Wert 1, 2, 3, 4, 5 oder 10 annimmt unterschiedliche Programmteile abgearbeitet werden. Anweisungen, mit denen sich Fallunterscheidungen realisieren lassen, sind häufig mit Case oder ähnlichen betitelt."

                oder http://www.galileocomputing.de/openbook/unix_guru/node310.html:
                "Die Fallunterscheidung ist eine Art gestaffeltes if. Der Inhalt einer Variablen wird untersucht und für jeden denkbaren Inhalt eine Aktion definiert."

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Ich wollte nur mal wissen ob man mit der Fallunterscheidung auch Berreiche abfragen kann ... also zum beispiel > 1 oder so.

    Xeroooo,
    Wenn du mit „Fallunterscheidung“ switch meinst, dann nein (AFAIK).

    Mit if ist das aber kein Problem.

    Live long and prosper,
    Gunnar

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  3. Ich wollte nur mal wissen ob man mit der Fallunterscheidung auch Berreiche abfragen kann ... also zum beispiel > 1 oder so.

    Du msinst ob eine Zahl in einem Bereich liegt?
    z.b. zwischen 1 und 7

    var a = 0;
    if(a > 0 && a < 8) alert('ja'); else alert('nein');

    Struppi.

    1. z.b. zwischen 1 und 7

      var a = 0;
      if(a > 0 && a < 8) alert('ja'); else alert('nein');

      Struppi,
      Das stimmt wohl nicht ganz.

      var a = 0.5;  
      if(a > 0 && a < 8) alert('ja'); else alert('nein');
      

      liefert wohl nicht das gewünschte Ergebnis.

      Live long and prosper,
      Gunnar

      --
      „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
      1. Das stimmt wohl nicht ganz.

        var a = 0.5;

        if(a > 0 && a < 8) alert('ja'); else alert('nein');

        
        >   
        > liefert wohl nicht das gewünschte Ergebnis.  
          
        Wer hat den von Fließkommazahlen gesprochen ;-)  
          
        Aber na gut auch das geht:  
          
        ~~~javascript
        var a = 0.5;  
        if(a >= 1 && a <=7) alert('ja'); else alert('nein');
        

        Struppi.

        1. Aber na gut auch das geht:
          var a = 0.5;
          if(a >= 1 && a <=7) alert('ja'); else alert('nein');

          Struppi,
          Das trifft aber auch nicht „zwischen 1 und 7“ (so wie ich die Bedeutung mal gelernt habe).

          Die natürliche Sprache mag da ambivalent sein, ob die Ränder mit dazugehören. Bei uns war mit „zwischen a und b“ das offene Intervall ]a, b[ gemeint; mit „von a bis b“ das geschlossene [a, b].

          Live long and prosper,
          Gunnar

          --
          „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
          1. Aber na gut auch das geht:
            var a = 0.5;
            if(a >= 1 && a <=7) alert('ja'); else alert('nein');

            Struppi,
            Das trifft aber auch nicht „zwischen 1 und 7“ (so wie ich die Bedeutung mal gelernt habe).

            Dann kommen die Gleichheitszeichen weg.

            Die natürliche Sprache mag da ambivalent sein, ob die Ränder mit dazugehören. Bei uns war mit „zwischen a und b“ das offene Intervall ]a, b[ gemeint; mit „von a bis b“ das geschlossene [a, b].

            Mir war die Orginalaussage zu Ambivalent, als das ich darauf eingehen wollte ;-)
            .... ich hab nur Realschule gemacht, bitte keine höhere Mathematik

            Struppi.

  4. Hi,

    ich habe ne sicherlich einfache Frage...

    Wie Du an den Reaktionen und Diskussionen vielleicht schon festgestellt haben magst: nein, hast Du nicht ;-)

    Ich wollte nur mal wissen ob man mit der Fallunterscheidung auch Berreiche abfragen kann ... also zum beispiel > 1 oder so.

    Es hat sich ja bereits herausgestellt, das Du mit "Fallunterscheidung" eine switch() meinst. Nun ist ein switch(x) eigentlich nichts anders als eine Optimierungshilfe für den Compiler/Interpreter: die Variable x soll nur bei den in den "cases" bestimmten Werten wichtig sein, ansonsten nicht (oder auch umgekehrt, ist hier egal). Wenn diese Werte tatsächlich bestimmt sind (1,2,3 oder auch als Strings "eins, "zwei", "drei"), dann kann der Compiler/Interpreter sowas wunderbar optimieren.
    Sind es aber Bereiche, die zudem an einer Seite offen sind, kann er das nicht, er bastelt daraus höchstwahrscheinlich eine if/else Kette. Das ist zwar einerseits angenehm, da Du das dann nicht selbst zu tun brauchst aber andererseits auch viel Arbeit für den Compiler/Interpreter. Bei einem Compiler ist das recht egal: da machst Du es nur einmal, aber bei einem Interpreter machst Du es bei jedem Aufruf des Scriptes.
    Du kannst es also (ja, das war ein kaum nachvollziehbarer Sprung ;-) besser gleich eigenhändig trennen:

      
    function testValues(a){  
      var found = false;  
      
      if(isNaN(a)) return Number.NaN;  
      
      switch(a){  
        case 1:  alert("a ist 1. Beweis: a = " + a);  
                 found = true;  
                 break;  
        case 7:  alert("a ist 5. Beweis: a = " + a);  
                 found = true;  
                 break;  
        default: break;  
      }  
      if(found) return;  
      if(a < 5){  
        alert("a ist kleiner als 5. Beweis: a = " + a);  
      }  
      if(a >= 5){  
        alert("a ist größergleich 5. Beweis: a = " + a);  
      }  
    }  
    
    

    Die Reihenfolge ist natürlich wichtig wenn die genauen Werte innerhalb der Bereichsabfragen liegen, wie es hier der Fall ist. Es geht natürlich auch andersrum aber dann würdest Du einen switch pro Bereichsabfrage benötigen:

      
    function testValues(a){  
      if(isNaN(a)) return Number.NaN;  
      if(a < 5){  
        switch(a){  
          case -1: alert("a ist -1. Beweis: a = " + a);  
                   break;  
          case 1:  alert("a ist 1. Beweis: a = " + a);  
                   break;  
          case 4:  alert("a ist 4. Beweis: a = " + a);  
                   break;  
          default: break;  
        }  
        alert("a ist kleiner als 5. Beweis: a = " + a);  
      }  
      if(a >= 5){  
        switch(a){  
          case 5:   alert("a ist 5. Beweis: a = " + a);  
                    break;  
          case 7:   alert("a ist 7. Beweis: a = " + a);  
                    break;  
          case 616: alert("a ist 616. Beweis: a = " + a);  
                    break;  
          default: break;  
        }  
        alert("a ist größergleich 5. Beweis: a = " + a);  
      }  
    }  
    
    

    (beides nicht probiert und daher in der stillen Hoffnung, das ich keine allzu groben Fehler gemacht habe ;-)

    so short

    Christoph Zurnieden