ubound + lbound in VBScript? Äquivalente Array-Funktionen in JavaScript?

Jerinca

Erfahrenes Mitglied
Hallo Leute!

Ich suche JavaScript-Methoden, die die Methoden Ubound und Lbound aus VBScript ersetzen!

In VBScript gibt es Array-Funktionen, die entweder den größten Wert (Ubound) oder den kleinsten Wert (Lbound) eines Arrays rausfinden/zurückgeben!

Aber ich finde nirgends etwas vergleichbares in JavaScript!

Es gibt ja dieses sort() und shift() und ich dachte schon, damit würde es gehen: Zuerst sortieren und dann das erste Element nehmen, aber shift() ENTFERNT ja anscheinend das erste Element und das will ich ja nun nicht!

Ach ja, der Hintergrund: Es geht eigentlich nur um eine for-Schleife, die in VBScript lautet:
Code:
for i = 0 to Ubound(array)     'Loop through the array
Aber ich brauch das halt in JavaScript, denn ich darf das nicht mischen :(

Hat jemand eine Idee, wie das zu bewerkstelligen ist?
 
In Javascript gibt es keine vergleichbaren Methoden.

in JScript gibt es diese Methoden(lbound()/ubound()), diese beziehen sich jedoch nur auf VBArray's

Mit Javascript ginge es so:
Code:
sort(array);
erster=array[0];
letzter=array[array.length-1];
 
Hallo Sven!

Zunächst mal danke für Deine Antwort; sie hat mich schonmal ein Stück weiter gebracht. Es geht ja um Arrays und deshalb gibt es immernoch ein Problemchen:

Also, angenommen, ich habe eine Zahlenreihe: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 und einige zuvor selektierte Werte (Bsp.: 1, 5, 10) mache ich in ein Array. Dann würde das so ausshehen:

arr[0]=1
arr[1]=5
arr[2]=10


Wenn ich aber mit Deiner Funktion arbeite, versteht er nicht die 2 als letztes Array-Element, sondern die 10 und deshalb kann ich von da ab nicht weiterarbeiten, weil ich dann eine for-Schleife anbinde und die ab dem 4. Element (arr[3]) "undefined" zurückgibt!

Code:
function numsort(a,b) { // das ist für's richtige Sortieren, sonst steht z.B. 10 vor 4
return a-b; 
}
arr.sort(numsort);
var erster = arr[0];
var letzter = arr[arr.length-1];	
for (i = 0; i <= letzter; i++) {
usw.

So, als "letzter" wird nun im Beispielfall die 10 angenommen! Richtig wäre allerdings arr[2]! Die Schleife soll nämlich 3 mal durchlaufen werden und nicht 10 Mal :suspekt:

Ich hoffe, Du verstehst, was ich meine :rolleyes:

Vielleicht habe ich mich am Anfang dieses Threads nicht richtig ausgedrückt: Ich brauche nicht den größten Wert des Arrays, sondern das größte/letzte Element! Am Anfang habe ich das auch noch gar nicht so genau gewußt... Bin erst jetzt dahinter gestiegen, woran der Fehler liegt...

Kennst Du oder kennt jemand anderes vielleicht eine Funktion in JavaScript, die genau das macht? Wie gesagt, ist es in VBScript die Funktion Ubound!
 
Hallo nochmal!

Sorry für das Rumgejammere, aber ich bin mittlerweile selbst dahinter gekommen, wie's klappt!

Ich brauche das "erster" und "letzter" eigentlich gar nicht, sondern in der for-Schleife schreibe ich:
Code:
for (i = 0; i <= arr.length-1; i++) {
usw.
Das Problem lag einfach in der Definition von "letzter":

Code:
var letzter = arr[arr.length-1];

Und ich habe ja nur das arr.length-1 gebraucht...

Naja, NACHDENKEN Jerinca, bevor Du die armen Tutorials-Moderatoren nervst :rolleyes:
 
Zurück