2010-08-09 28 views
18

Algo muy simple que estoy tratando de hacer en JS (asignar los valores de una matriz a otra), pero de alguna manera el valor bar de la matriz no parece afectar en absoluto.Rellenar otra matriz desde la matriz - Javascript

Lo primero que probé, por supuesto, fue simplemente bar = ar; - no funcionó, así que traté de pasarlo manualmente ... todavía no funciona.

¡No me gustan las peculiaridades de Javascript! ¡¡Por favor ayuda!!

 

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

Y, aquí está el violín: http://jsfiddle.net/vGycZ/


(.. Lo anterior es una simplificación La matriz real es multidimensional)

+0

cheque esto: http: //www.hardcode.nl/subcategory_1/article_414-copy-or-clone-javascript-array-object –

+0

Puede haber detectado el error de sintaxis ("arr" frente a "ar") que se le indicó mediante el uso del complemento Firebug para Firefox. Me atrevería a decir que no se puede hacer un desarrollo de Javascript sin eso. –

+0

no hago mucho javascript - y tbh nunca imaginé cómo usar Firebug :(... señalar algunos buenos tutoriales a mí? – ina

Respuesta

42

Su código no está funcionando porque no está inicializando bar:

var bar = []; 

También olvidó declarar su variable i, que puede ser problemático, por ejemplo, si el código está dentro de una función, i terminará siendo una variable global (siempre use var :).

embargo, puede evitar el bucle, simplemente usando el método slice para crear una copia de la primera matriz: la variable

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

+1 por sugerir rebanada –

+0

sí +1 por porción - por cierto, cortar trabajo para matrices multidimensionales? – ina

+0

ina: ¡parece que puede usar un pequeño truco para eso! var bar = arr.concat(); –

3

Usted tiene dos problemas:

Primero debe inicializar bar como una matriz:

var bar = []; 

Entonces arr debería ser ar aquí:

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

entonces obtendrá alertado a su plátano :)

+0

yup - exactamente también usado para php sloppiness, se olvidó de declarar la matriz! ¡gracias por ser el primero en responder! – ina

1

Se te ha olvidado ar Prueba este

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

sí tipo para el puntero - esto no era real código, simplemente simplificación brutal escrita demasiado rápido para un jsfiddle – ina

1

El problema probablemente aquí en la declaración de bucle for:

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

Debe reparar el ar.length en lugar de arr.length. Y es mejor inicializar la barra como: var bar = [].

1

En su código, la variable arr en el bucle for no es la misma que su matriz original ar: tiene demasiadas r.

Cuestiones relacionadas