JavaScript Frage zu Array und Schleife

Nevvermind

Lieutenant
Registriert
Feb. 2008
Beiträge
707
Hallo,

ich muss einen Array erstellen, der die Zahlen 1 bis 100 enthält. Dieser Array soll mit einer while Schleife befüllt werden und ich soll den 36. und 32. Wert ausgeben. Leider habe ich keine Ahnung, wie ich das machen soll. Ich hoffe einer von euch kann mir helfen.

Vielen Dank!
 
Wie ein Array und eine while-Schleife funktioniert weiß ich in etwa, ich weiß nur nicht ganz wie ich es hinbekomme, dass sich der Array automatisch füllt. Also die Bedingung in der while-Schleife, ich weiß nicht, wie ich den Array dort einbauen soll.

Das handelt sich dabei um eine Übungsaufgabe für eine Klausur zum Thema.
 
Zuletzt bearbeitet:
Solange das Array weniger Elemente als 100 enthält soll die Schleife laufen.
--> Die Bedingung ist also, die Größe (length) des Arrays.
oder
--> Einfach ein Index bis 100 hochzählen ohne die Größe des Arrays zu überprüfen
 
Automatisch befüllt sich nie was.
Nehmen wir an Du machst die Whileschleife bis ein Zähler i bei 100 ist. Den Zähler erhörst Du jeden Durchgang um 1.

Dann greifst Du auf die Arraystelel an der Stelle i zu und schreibst dort i rein. Dann machst noch ein if, ob i 32 oder ob i 36 ist. Wenn ja, gibst Du i aus.

while (i<100) ist dein Schleifenkopf.

Was daran ist unklar? Oder hat Dir das schon geholfen?

Viele Grüße
Winni
 
Und was hast du von der Übung, wenn Leute dir die Lösung sagen?

Sag doch was du bislang versucht hast, dann können dir Leute sagen, woran es evtl hapert.

Außerdem: Wenn du schon eine Übungsaufgabe stellst, dann wäre es sinnvoll, sie 1:1 zu stellen und nicht in eigenen Worten... denn dann kommen mit unter schon falsche Interpretationen ins Spiel...
 
WinKill schrieb:
Automatisch befüllt sich nie was.
Nehmen wir an Du machst die Whileschleife bis ein Zähler i bei 100 ist. Den Zähler erhörst Du jeden Durchgang um 1.

Dann greifst Du auf die Arraystelel an der Stelle i zu und schreibst dort i rein. Dann machst noch ein if, ob i 32 oder ob i 36 ist. Wenn ja, gibst Du i aus.


while (i<100) ist dein Schleifenkopf.

Was daran ist unklar? Oder hat Dir das schon geholfen?

Viele Grüße
Winni


Danke für die Hilfe. while (i<100) ist vollkommen klar. Meine Frage ist eher folgendes:

while (i<100) {
i++
????
}

Ich kenne den Ausdruck für den Array in diesem Zusammenhang nicht. Ich habe bisher Arrays so aufgeschrieben:

var i = [99];
i[0] = 1;
i[1] = 2;
...

Daher weiß ich nicht, wie ich das in die While-Schleife einbinden soll.

1668mib schrieb:
Und was hast du von der Übung, wenn Leute dir die Lösung sagen?

Sag doch was du bislang versucht hast, dann können dir Leute sagen, woran es evtl hapert.

Außerdem: Wenn du schon eine Übungsaufgabe stellst, dann wäre es sinnvoll, sie 1:1 zu stellen und nicht in eigenen Worten... denn dann kommen mit unter schon falsche Interpretationen ins Spiel...

Es geht hier nicht darum, dass ich irgendjemandem das Ergebnis zeigen muss, ich möchte nur wissen, wie ich das in die While-Schleife einbinde. Ich stehe erst am Anfang des Themas und habe daher fast kein Wissen darüber.
 
Zuletzt bearbeitet:
Und warum liest du dann nicht einfach mal verlinkte Seiten? Da sind genug Beispiele und zeigen auch, dass die Zeile "var i = [99];" Quatsch ist...
 
War ein schlechtes Beispiel:
var i = 0;
var zahl = [0];
while (i < 100) {
zahl[0] = i;

Keine Ahnung, wie man das schreiben soll...



Aus den Links werde ich leider auch nicht schlauer. Ich stehe am Anfang des Themas und da werden Dinge behandelt, von denen ich noch nie gehört habe.
 
Zuletzt bearbeitet:
Die Zeile "var zahl = ;" ist dennoch Quatsch. Lies dich doch einfach mal schlau...

Ich stehe am Anfang des Themas und da werden Dinge behandelt, von denen ich noch nie gehört habe.
Würde mich wundern, wenn es nicht so wäre... Oder lernst du nur Dinge, die du schon kennst? oO

Dann frag halt einfach was du nicht verstehst. Dann kann man auch helfen.
Oder informier dich halt hier: http://de.selfhtml.org/javascript/objekte/array.htm

Kannst du mal in eigenen Worten sagen, was ein Array ist?
 
Zuletzt bearbeitet:
die Lösung liegt darin, dass Du für die Arrayadressierung keine Konstanten nehmen musst, sondern auch Variablen verwenden kannst.
 
WinKill schrieb:
die Lösung liegt darin, dass Du für die Arrayadressierung keine Konstanten nehmen musst, sondern auch Variablen verwenden kannst.

Danke für den Hinweis. Sowas in der Art?

var i = 0;
var j = 1;
Zahlen = new Array(100);
while (i < 101 && j < 100 ) {
Zahlen[j] = i;
i++;
j++;
document.write(Zahlen[j]);
}
 
genau, aber wenn Du i und j anschaust, wirst Du noch Optimierungspotential finden.

Richtig ists aber schon.
 
1. Du erstellst dir ein leeres Array, deins ist mit der Zahl 100 befüllt
2. Du erstellst dir ein index
3. Die iterierst in der while schleife bis 100
4. Du befüllst das Array mit "push"
5. Ausgabe außerhalb der Schleife
 
Zuletzt bearbeitet:
palace4d schrieb:
1. Du erstellst dir ein leeres Array, deins ist mit der Zahl 100 befüllt

Nah, das stimmt nicht so ganz. "new Array(100)" erzeugt eine Array mit einer Länge von 100 leeren Elementen.
Dazu sollte man sagen, dass Arrays in Javascript ein paar Eigenheiten besitzen. Im laufe der Javascript Entwicklung (bzw. der verschiedenen ECMAScript Versionen) hat sich der Umgang mit Arrays immer wieder verändert. Deshalb gibt es heute auch nicht "den einzig richtigen weg".

var x = new Array()
var x = []

Du kannst mit beiden Arten eine leere Array erzeugen. Genau genommen ist da ein kleiner Unterschied. Aber um das zu verstehen muss man tiefer in Javascript rein gucken (hat was mit Objekten du tun). Ich würde dir die zweite Art empfehlen, aber das ist hier jetzt nicht wirklich relevant. Da Variablen in JS sehr dynamisch sind, muss man keine Länge angeben. Es würde auch nur verwirren. Der Index der Array beginnt normal mit einer 0. Also ist 0 das erste Element.

x[0] = 42

und

var y = 0
x[y] = 42

machen genau das gleiche. In die Array x wird in den Index 0 der Wert 42 gespeichert. x[0] würde also 42 zurück geben.

var y = 0
x[y] = y
Das würde auch gehen. Jetzt steht in x[0] der wert 0. Und jetzt könntest du y in einer Schleife hoch zählen ;)
Ich hoffe das hilft bei ein paar Fragen.

Wenn du mit Javascript etwas testen willst, würde ich dir empfehlen mit der Konsole des Browsers zu arbeiten. Wenn du z.B. eine Array mit console.log(x) ausgibst, zeigt dir die Konsole alle Werte in der Array. Dann muss man alles "per Hand" in HTML ausgeben. In Firefox öffnet man die Konsole über STRG + SHIFT + K. In Chrome ist es STRG + SHIFT + C wenn ich mich richtig erinnere.
 
Zuletzt bearbeitet:
T0a5tbr0t schrieb:
Nah, das stimmt nicht so ganz. "new Array(100)" erzeugt eine Array mit einer Länge von 100 leeren Elementen.
Dazu sollte man sagen, dass Arrays in Javascript ein paar Eigenheiten besitzen. Im laufe der Javascript Entwicklung (bzw. der verschiedenen ECMAScript Versionen) hat sich der Umgang mit Arrays immer wieder verändert. Deshalb gibt es heute auch nicht "den einzig richtigen weg".

var x = new Array()
var x = []

Du kannst mit beiden Arten eine leere Array erzeugen. Genau genommen ist da ein kleiner Unterschied. Aber um das zu verstehen muss man tiefer in Javascript rein gucken (hat was mit Objekten du tun). Ich würde dir die zweite Art empfehlen, aber das ist hier jetzt nicht wirklich relevant. Da Variablen in JS sehr dynamisch sind, muss man keine Länge angeben. Es würde auch nur verwirren. Der Index der Array beginnt normal mit einer 0. Also ist 0 das erste Element.

x[0] = 42

und

var y = 0
x[y] = 42

machen genau das gleiche. In die Array x wird in den Index 0 der Wert 42 gespeichert. x[0] würde also 42 zurück geben.

var y = 0
x[y] = y
Das würde auch gehen. Jetzt steht in x[0] der wert 0. Und jetzt könntest du y in einer Schleife hoch zählen ;)
Ich hoffe das hilft bei ein paar Fragen.

Wenn du mit Javascript etwas testen willst, würde ich dir empfehlen mit der Konsole des Browsers zu arbeiten. Wenn du z.B. eine Array mit console.log(x) ausgibst, zeigt dir die Konsole alle Werte in der Array. Dann muss man alles "per Hand" in HTML ausgeben. In Firefox öffnet man die Konsole über STRG + SHIFT + K. In Chrome ist es STRG + SHIFT + C wenn ich mich richtig erinnere.

Vielen Dank für deine Hilfe. Besonders der Tipp mit der Konsole ist extrem hilfreich.

Ich verstehe das laut deiner Aussage jetzt so:

var y = 0;
var Zahlen[y] = y;
while (y < 100) {
document.write("hallo");
y++;
}

Normalerweise müsste er doch jetzt 100 Mal hallo schreiben, oder? Was habe ich falsch gemacht?
 
Zuletzt bearbeitet:
palace4d schrieb:
Das stimmt natürlich...ich habe die nicht literale Schreibweise übersehen :)


Der Fehler liegt in dieser Zeile.

Überprüfe den Variablennamen
http://de.selfhtml.org/javascript/sprache/regeln.htm#namen

Hmmh, ich habe weder reservierte Wörter noch Sonderzeichen benutzt. Die [] Zeichen brauche ich ja für den Array. Wo liegt der Fehler? Tut mir leid, ich bin noch ein ziemlicher Anfänger :rolleyes:
 
Die Brackets [] sind Sonderzeichen, und nein du benötigst sie nicht im Variablennamen.
Bsp: Zahlen[5] --> Index 5 im Zahlenarray enthält einen Wert und kann deshalb kein Variablenname sein.
 
Zurück
Oben