2010-08-09 23 views
18

Sehr einfache Sache, die ich in JS (zuweisen die Werte eines Arrays zu einem anderen) versuchen, aber irgendwie scheint der Wert des Arrays bar überhaupt nicht betroffen.Füllen eines anderen Array aus Array - Javascript

Das erste, was ich versuchte, war natürlich einfach bar = ar; - hat nicht funktioniert, also habe ich versucht, manuell durchschleifen ... immer noch nicht funktioniert.

Ich nicht die Macken von Javascript grok! Bitte helfen Sie !!

 

var ar=["apple","banana","canaple"]; 
var bar; 
 
 
for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 

Und hier ist die Geige: http://jsfiddle.net/vGycZ/


(.. Das Vorstehende ist eine Vereinfachung Die tatsächliche Array mehrdimensional)

+0

Check this: http: //www.hardcode.nl/subcategory_1/article_414-copy-or-klon-javascript-array-object –

+0

Sie hätten den Syntaxfehler ("arr" vs "ar") erkennen können, auf den Sie mit dem Firebug-Plugin für Firefox hingewiesen wurden. Ich würde so weit gehen zu sagen, dass Sie Javascript-Entwicklung nicht ohne es richtig machen können. –

+0

Ich mache nicht viel Javascript - und tbh ich habe nie herausgefunden, wie Firebug zu verwenden :(... zeigen Sie ein paar gute Tutorials auf mich? – ina

Antwort

42

Ihr Code nicht funktioniert weil Sie nicht initialisieren bar:

var bar = []; 

Sie haben auch vergessen, Ihre i Variable zu deklarieren, was problematisch sein kann, zum Beispiel, wenn der Code innerhalb einer Funktion ist, wird i am Ende eine globale Variable sein (verwenden Sie immer var :).

Aber können Sie die Schleife vermeiden, indem Sie einfach die slice Verfahren unter Verwendung einer Kopie des ersten Array zu erstellen:

var arr = ["apple","banana","canaple"]; 
var bar = arr.slice(); 
+4

+1 für den Vorschlag Slice. –

+0

Ja +1 für Slice - BTW funktioniert Slice für mehrdimensionale Arrays? – ina

+0

ina: Es scheint, Sie können einen kleinen Trick dafür verwenden! var bar = arr.concat(); –

3

Sie haben zwei Probleme:

Zuerst müssen Sie 012 initialisierenals Array:

var bar = []; 

Dann sollten arrar hier sein:

for(i=0;i<arr.length;i++){ 

Dann werden Sie Ihre Banane aufmerksam gemacht bekommen :)

+0

yup - genau das. Zu php Schlamperei, vergessen, das Array zu deklarieren! Danke, dass Sie der Erste sind, der antwortet! – ina

1

Sie haben falsch geschriebene Variable ar Versuchen Sie, diese

for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 
+0

Ja ty für den Zeiger - das war nicht wirklich Code, nur brutale Vereinfachung eingegeben zu schnell für einen jsfiddle – ina

1

Die Problem wahrscheinlich hier in der for-Schleife Aussage:

for(i=0;i<ar.length;i++){ 
    bar[i]=ar[i]; 
} 
alert(ar[1]); 

Sie müssen an ar.length anstelle von arr.length. beheben und es ist besser, Bar als zu initialisieren: var bar = [].

1

In Ihrem Code ist die Variable arr in der for-Schleife nicht das gleiche wie Ihr ursprüngliches Array ar: Sie haben eine zu viele r.

Verwandte Themen