Foros del Web » Programando para Internet » Javascript »

Array bidimensional

Estas en el tema de Array bidimensional en el foro de Javascript en Foros del Web. Hola a todos.. Pregunta Por que al final almacena el ultimo valor??? <HTML> <HEAD> </HEAD> <BODY> <FORM name="testarray"> <P></P> <table width="75%" border="1"> <tr> <td>Rut del ...
  #1 (permalink)  
Antiguo 29/05/2003, 10:06
Avatar de mazingerz  
Fecha de Ingreso: febrero-2003
Ubicación: Sarasota FL
Mensajes: 147
Antigüedad: 21 años, 2 meses
Puntos: 0
Array bidimensional

Hola a todos..
Pregunta Por que al final almacena el ultimo valor???

<HTML>
<HEAD>
</HEAD>
<BODY>
<FORM name="testarray">
<P></P>
<table width="75%" border="1">
<tr>
<td>Rut del Asegurado</td>
<td></td>
<td><input name="rut_asegurado_beneficiario" size=15>
-
<input name="dv_ab" size=3></td>
</tr>
<tr>
<td>Nombre</td>
<td></td>
<td><input name="nombres_ab" size=70 ></td>
</tr>
<tr>
<td >Apellido</td>
<td></td>
<td><input name="apellidos_ab" size=70 ></td>
</tr>
<tr>
<td>Fono</td>
<td></td>
<td><input name="fono_ab" size=70 ></td>
</tr>
<tr>
<td>fax</td>
<td></td>
<td><input name="fax_ab" size=30 ></td>
</tr>
<tr>
<td>Giro</td>
<td></td>
<td><input name="giro" size=30 ></td>
</tr>
<tr>
<td>Dirección Comercial</td>
<td></td>
<td><input name="direccion_ab" size=70 ></td>
</tr>
<tr>
<td>Comuna</td>
<td></td>
<td><input name="comuna_ab" size=70 ></td>
</tr>
<tr>
<td>Ciudad</td>
<td></td>
<td><input name="ciudad_ab" size=70 ></td>
</tr>
</table><BR>
<table width="75%" border="1">
<tr>
<td><INPUT type=button value="Nuevo" name="nuevo" onclick="Atestarray();"></td>
<td></td>
<td></td>
</tr>
</table>
</FORM>
</BODY>
</HTML>
<script language="javascript">
function Atestarray()
{
var nlen=0;
for (var i=0; i<document.forms[0].elements.length; i++)
{ if (document.forms[0].elements[i].type=='text')
{ nlen++; } }
//Creo un arreglo con el numero de INPUT type=text
var a_fields = new Array(nlen,2);
//Poblo el Arreglo con el nombre de la etiqueta y luego el valor que contiene
for (var i=0; i<document.forms[0].elements.length; i++)
{ if (document.forms[0].elements[i].type=='text')
{ a_fields[i+1,1]=document.forms[0].elements[i].name;
a_fields[i+1,2]=document.forms[0].elements[i].value;
//Para ver el contenido de la posicion del Arreglo!!!
window.alert ('Array :' + a_fields[i+1,1] + '=' + a_fields[i+1,2]);
}
}
//Bueno ahora recorro el arreglo completo y visualizo el
//contenido....No puede ser....en todas las posiciones me muetra el ultimo
//valor.....
for (var i=1 ; i<nlen+1 ; i++)
{
window.alert ('Array :' + a_fields[i,1] + '=' + a_fields[i,2]);
}
}
</script>
  #2 (permalink)  
Antiguo 29/05/2003, 16:15
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Mazingerz:
La linea
Cita:
var a_fields = new Array(nlen,2);
no define un array bidimensional. De hecho, define un array de una dimensión con dos elementos los cuales son el contenido "nlen" y 2.

Ahora bien, un array de varias dimensiones no es otra cosa más que arrays dentro de un array. El modo de acceso a un elemento en un array dentro de otro array, es:

array[posicionN][posicion_en_posicionN]

Una cosa más. Los arrays en JavaScript comienzan con índice 0. Y pueden ser declarados ya sea con:

Código:
variable_array = new Array(elemento1, elemento2, elementoN) // (así lo hiciste)
o bien, con el literal de arrays:

Código:
"variable_array = [elemento1, elemento2, elementoN];"
En resumen, modificando tu código para ajustarse a la síntaxis de Javacript, queda así:

Código:
function Atestarray(){
   var a_fields = new Array(); 
   for (var i=0; i<document.forms[0].elements.length; i++){
      if (document.forms[0].elements[i].type=='text'){

         a_fields[i] = [document.forms[0].elements[i].name, 
                              document.forms[0].elements[i].value
                             ];
      }
   }

   for (var i=0 ; i<a_fields.length ; i++){
      window.alert ('Array :' + a_fields[i][0] + '=' + a_fields[i][1]);
   }
}
Saludos.

Última edición por Beakdan; 29/05/2003 a las 16:20
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:56.