JavaScript - Arrays
shirinka
- javascript
Hallo!
Ich habe folgende Frage, auf die ich wirklich keine Antwort finden kann. Ich habe folgenen Beispielcode dazu verfasst:
<script type="text/javascript">
<!--
var a = new Array(4);
var b = new Array(4);
for (i=0; i < a.length; ++i)
{
a[i] = new Array(10);
b[i] = i;
}
for (i=0; i < a.length; ++i)
{
a[0][i] = i;
}
alert(a[0][b[1]]); //ist a[0][1]
//-->
</script>
Warum kommt "undefined" als Ausgabe? Ich meine: b[1] ist ja an der Stelle schon definiert (ist 1) und a[0][1] ist laut der 2. Schleife auch 1, also wo liegt das Problem bei Arrays in JavaScript?
Ich meine, es ist nicht so, dass ich das Problem nicht umgehen kann. Es ist eher ein Problem, das wahrscheinlich irgendwelche technische JavaScript-Gründe hat, oder ist das grundsätzlich ein Problem auch bei anderen Programmiersprachen (hab momentan keine Zeit, um es in anderen Systemen zu testen). Also ist es einach eine Frage, die mich persönlich interessieren.
Wäre für jede vermutung dankbar!
Mit freundlichen Grüßen,
shirinka
Hallo, und noch was: Meine erste Vermutung ist, dass in Arrays von JavaScript nicht wirklich Integer-Zahlen gespeichert werden.
Mit freundlichen Grüßen,
shirinka
Hallo shirinka,
Mozilla 1.6 hat keine Probleme mir "1" auszugeben,
Opera 7.54 hat keine Probleme mir "1" auszugeben,
Firefox 10 hat keine Probleme mir "1" auszugeben,
mit welchem "Browser" arbeitest Du?
Gruß aus Berlin!
eddi
Mozilla 1.6 hat keine Probleme mir "1" auszugeben,
Opera 7.54 hat keine Probleme mir "1" auszugeben,
Firefox 10 hat keine Probleme mir "1" auszugeben,
Hi, echt seltsam :(
Mozila 1.71 sagt "undefined",
Opera 7.15 sagt "undefined",
Internet Explorer 6.0 sagt "undefined"
Mfg,
shirinka
Hi,
in einer einfachen Seite:
<html>
<head>
<script language="javascript" type="text/javascript">
function test() {
var a = new Array(4);
var b = new Array(4);
for (i=0; i < a.length; ++i)
{
a[i] = new Array(10);
b[i] = i;
}
for (i=0; i < a.length; ++i)
{
a[0][i] = i;
}
alert(a[0][b[1]]); //ist a[0][1]
}
</script>
</head>
<body onLoad="test();">
</body>
</html>
hab ichs getestet. Kommt 1 raus :)
War das nicht was du wolltest?
JM
hab ichs getestet. Kommt 1 raus :)
War das nicht was du wolltest?JM
Ich hab es gerade mit 3 Browsern getestet (in anderer Nachricht aufgelistet)und heute Vormittag noch mal mit IE5 und es kam und kommt tatsächlich "undefined" raus.
Natürlich bin ich der Meinung, dass es funktionieren muss! Aber es geht hier nicht, warum auch immer ...
Wie gesagt, ich kanns auch umgehen, aber die Tatsache ist, dass das, was grundsätzlich funktionieren muss, scheinbar nicht ganz in Ordnung ist.
Mfg,
shirinka
Hi,
var a = new Array(4);
var b = new Array(4);
for (i=0; i < a.length; ++i)
{
a[i] = new Array(10);
a[i][0] ist jetzt zwar existent, aber ein Wert ist hierfür nicht definiert.
Gleiches gilt für a[i][1] bis a[i][9].
b[i] = i;
}
for (i=0; i < a.length; ++i)
i nimmt also Werte von 0 bis 3 an - die Länge von a wurde ja oben auf 4 festgesetzt.
Du benutzt hier die Länge des einen Arrays (a), um über die Inhalte eines anderen Arrays (a[0]) zu laufen.
Ist das wirklich das, was Du willst?
{
a[0][i] = i;
}
Jetzt sind also a[0][0] bis a[0][3] auf definierte Werte (0 bis 3) gesetzt.
a[0][4] bis a[0][9] sind aber immer noch undefiniert.
alert(a[0][b[1]]); //ist a[0][1]
sollte also 1 ausgeben.
Für a[0][b[4]] bzw. a[0][4] sollte aber undefined rauskommen.
cu,
Andreas