werte eines arrays in function addieren
maggi1990
- javascript
Hallo liebe Gemeinde,
Ich weiß nicht mehr weiter und hoffe ihr könnt mir ein wenig auf die Sprünge helfen :)
Momentan sieht meine Funktion so aus:
function addieren(Kosten) {
var erg = 0;
for (i=1; i <= 12; i++) {
erg = erg + Kosten[i]; };
alert(erg);
return erg;
};
Das dazugehörige Array:
Kosten = new Array(40, 25, 8, 32.98, 11, 32, 9.9, 53.94, 87);
Nun habe ich festgestellt das er die Funktion gar nicht erst ausführt (aufgrund der fehlenden alert-Meldung).
Mozilla sagt mir in der Fehlerkonsle: missing ) after formal parameters
Was heißt das und wie bringe ich diese Funktion nun zum laufen?
Danke schonmal im vorraus
Was heißt das und wie bringe ich diese Funktion nun zum laufen?
Rück' deinen Code mal ordentlich ein, dann sollte dir schnell auffallen, dass da ein Strichpunkt zu viel ist.
Hi!
Rück' deinen Code mal ordentlich ein, dann sollte dir schnell auffallen, dass da ein Strichpunkt zu viel ist.
Der hinter dem for-Schleifen-Körper-Ende? Der ist zwar überflüssig, aber er stört niemanden. Damit ergibt sich nur eine leere Anweisung. Davon kann man beliebig viele notieren.
Das eigentliche Problem ist nicht nachvollziehbar, weil außer dem falschen Laufindex kein Fehler zu sehen ist. Die angemeckerte Klammer muss woanders sitzen.
Lo!
function addieren(Kosten) {
var erg = 0;
for (i=1; i <= 12; i++) {
erg = erg + Kosten[i]; };
alert(erg);
return erg;
};
>
> Das dazugehörige Array:
> `Kosten = new Array(40, 25, 8, 32.98, 11, 32, 9.9, 53.94, 87);`{:.language-javascript}
>
Dein Array \_Kosten\_ hat nur 9 Elemente, und von Nummerierung bei Arrays beginnt mit 0, also:
`for (var i = 0; 1 <= 8; i++) {`{:.language-javascript}
etc.
Gruß H.
Hallo herrmann,
for (var i = 0; 1 <= 8; i++)
oder besser
for (var i=0; i<Kosten.length; i++)
Gruß, Jürgen
Hallo herrmann,
for (var i = 0; 1 <= 8; i++)
oder besser
for (var i=0; i<Kosten.length; i++)
Gruß, Jürgen
Hm habs ausprobiert leider kein Erfolg :(
Hi,
Hallo herrmann,
for (var i = 0; 1 <= 8; i++)
oder besser
for (var i=0; i<Kosten.length; i++)
oder besser
for (var i=0, len = Kosten.length; i<len; ++i) { }
Durch das zwischenspeichern der Array-Länge wird nicht jedem Schleifendurchlauf die Methode length() aufgerufen.
Weiterhin wichtig zu erwähnen (im Vergleich zur Ausgangsschleife):
- das Deklarieren des Schleifenzählers mit var als lokale Variable, um nicht aus Versehen globale Variablen zu überschreiben
- der Unterschied von ++i und i++ sollte hingegen vom JS-Compiler wegoptimiert werden können
Bis die Tage,
Matti
Durch das zwischenspeichern der Array-Länge wird nicht jedem Schleifendurchlauf die Methode length() aufgerufen.
Weiterhin wichtig zu erwähnen (im Vergleich zur Ausgangsschleife):
- das Deklarieren des Schleifenzählers mit var als lokale Variable, um nicht aus Versehen globale Variablen zu überschreiben
- der Unterschied von ++i und i++ sollte hingegen vom JS-Compiler wegoptimiert werden können
Bis die Tage,
Matti
danke für die antwort aber auch das hat leider nicht funktioniert :(
Hi,
danke für die antwort aber auch das hat leider nicht funktioniert :(
Bitte berücksichtige die Tipps für Fragende, und erspare uns weitere „funzt nich“-Postings, die so gut wie keinerlei Aussagekraft haben, weil sie keinerlei brauchbare Information enthalten.
MfG ChrisB
Du hast ein Semikolon zu viel in deinem Code.
Nach geschweiften Klammern musst du kein Semikolon mehr setzen. Tipp: Rücke den Text ordentlich ein, dann fällt dir sowas besser auf:
function addieren(Kosten) {
var erg = 0;
for (i=1; i <= 12; i++) {
erg = erg + Kosten[i];
}
alert(erg);
return erg;
};
Grüße, skiddo
Du hast ein Semikolon zu viel in deinem Code.
Nach geschweiften Klammern musst du kein Semikolon mehr setzen. Tipp: Rücke den Text ordentlich ein, dann fällt dir sowas besser auf:
Das könnte von mir stammen :D
Du hast ein Semikolon zu viel in deinem Code.
Nach geschweiften Klammern musst du kein Semikolon mehr setzen. Tipp: Rücke den Text ordentlich ein, dann fällt dir sowas besser auf:
function addieren(Kosten) {
var erg = 0;
for (i=1; i <= 12; i++) {
erg = erg + Kosten[i];
}
alert(erg);
return erg;
};
Richtig, da ist ein überflüssiges Semikolon. Ein Syntaxfehler ist das aber nicht! »;« ist einfach eine leere Anweisung. Davon kann man beliebig viele zwischen Statements einstreuen. Die Ursache des Syntaxfehlers muss woanders liegen.
Mathias
Richtig, da ist ein überflüssiges Semikolon. Ein Syntaxfehler ist das aber nicht! »;« ist einfach eine leere Anweisung. Davon kann man beliebig viele zwischen Statements einstreuen. Die Ursache des Syntaxfehlers muss woanders liegen.
[latex]Mae govannen![/latex]
Kosten = new Array(40, 25, 8, 32.98, 11, 32, 9.9, 53.94, 87);
function addieren(val1, val2) {
return val1 + val2;
}
var summe = Kosten.reduce(addieren);
Für alte Browser noch den Ersatzcode einfügen und gut ist.
Danke schonmal im vorraus
gerrrrn.
Stur lächeln und winken, Männer!
Kai