ifa: Array: Höchster Wert

Hallo alle! Wenn ich verschiedene Werte in einen Array mit nicht von vornherein bekannter Länge eintrage: Wie kann ich anschliessend am einfachsten die Indexnummer des höchsten Werts bestimmen?

Also:

meinArray=[13,-27,315,47,177];  

Wie bekomme ich am einfachsten das Ergebnis 2 (für das dritte Arrayelement und den höchsten Wert) heraus?

  1. Moin!

    Hallo alle! Wenn ich verschiedene Werte in einen Array mit nicht von vornherein bekannter Länge eintrage: Wie kann ich anschliessend am einfachsten die Indexnummer des höchsten Werts bestimmen?

    Also:

    meinArray=[13,-27,315,47,177];

    
    > Wie bekomme ich am einfachsten das Ergebnis 2 (für das dritte Arrayelement und den höchsten Wert) heraus?  
      
      
    Schreibe Dir diese Funktion am besten so um, dass diese einen Array mit dem key und dem Wert des Elementes zurück gibt.  
      
    function maxItem(ar) {  
      // gibt Nr und Wert des größten Elementes zurück  
      var max  = ar[0];  
      var maxi = 0  
      for (var i = 1; i < ar.length; i++) {  
        if (this[i] > max) {  
          max = this[i];  
          maxi=i;  
        }  
      }  
      return array(i,max);  
    }  
      
      
      
    Wenn Du eigentlich nur den höchsten oder niedrigsten Wert brauchst, dann reicht:  
      
    ~~~javascript
    Array.prototype.max = function(){  
        return Math.max.apply( Math, this );  
    };  
    	  
    Array.prototype.min = function(){  
        return Math.min.apply( Math, this );  
    };
    

    Aufruf z.B. mit:

    var ar=new Array(1,3,2,7,5);  
    alert (ar.max());
    

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Moin!

      Das kommt davon, wenn man seinen Code umschreibt. Hier die korrigierte und getestete Version:

      function maxItem(ar) {  
        // gibt Nr und Wert des größten Elementes als Array zurück  
        var max  = ar[0];  
        var maxi = 0  
        for (var i = 1; i < ar.length; i++) {  
          if (ar[i] > max) {  
            max = ar[i];  
            maxi=i;  
          }  
        }  
        return Array(maxi,max);  
      }  
      var  meinArray=new Array(1,3,2,7,5);  
      var arMax=maxItem(meinArray);  
      alert ('Maximum ist ' + arMax[1] + ' an Position ' + arMax[0] + '.');
      

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix

      1. Bestens, funktioniert prächtig. Danke!