Foros del Web » Programando para Internet » Javascript »

Redimensionar arrays dinámicamente.

Estas en el tema de Redimensionar arrays dinámicamente. en el foro de Javascript en Foros del Web. Hola a todos, hace mucho que no me peleo con javascript. Necesito crear un array bidimensional. Una dimensión no sé que tamaño tendrá y la ...
  #1 (permalink)  
Antiguo 06/07/2007, 04:21
 
Fecha de Ingreso: julio-2003
Mensajes: 240
Antigüedad: 20 años, 10 meses
Puntos: 1
Redimensionar arrays dinámicamente.

Hola a todos, hace mucho que no me peleo con javascript.

Necesito crear un array bidimensional. Una dimensión no sé que tamaño tendrá y la otra será de tamaño igual a 4.

Algo así:
Array[0][0] = "Dato";
Array[0][1] = "Dato";
Array[0][2] = "Dato";
Array[0][3] = "Dato";

Array[1][0] = "Dato";
Array[1][1] = "Dato";
Array[1][2] = "Dato";
Array[1][3] = "Dato";

........

Refresqué mis conocimientos con google y llegué a esta web:
http://dalila.sip.ucm.es/miembros/olga/arrays.html

En la cual pone muy clarito esto:
" ...... tanto que su capacidad se establece dinámicamente: si realizas la asignación miArray[99]="otro" cuando miArray tiene solamente dos casillas, su capacidad aumenta hasta 100 para hacer sitio al nuevo elemento ...."

Y este es mi código:

representacion = new Array();
datos = new Array(3);
XML=new Array(representacion,datos);

También he probado con esto:
XML = new Array();
XML[0]=new Array(4);


Al intentar acceder al 3º elemento, XML[2].x da error (en el segundo caso con XML[1]).

¿Por que no se amplía el tamaño del array automáticamente?

Tengo el código javascript dentro de un documento XSL, por si eso importa.

He puesto que el primer array sea de tamaño 10 y tampoco se soluciona el asunto, debe ser por otro motivo.

Lo estoy haciendo mal, seguro

A ver que me podeís comentar, un saludo y gracias.
  #2 (permalink)  
Antiguo 06/07/2007, 11:37
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Redimensionar arrays dinámicamente.

Hola qué tal

No es necesario que le pases la cantidad de items que va a tener al instanciar el array. Puedes crearlo así

pepes = new Array();

y aumentarlo así

pepes[pepes.length] = loquesea.

Un saludo
__________________
Javascript Códigos - Bambú difunde
  #3 (permalink)  
Antiguo 06/07/2007, 16:43
 
Fecha de Ingreso: julio-2003
Mensajes: 240
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: Redimensionar arrays dinámicamente.

Hola tunait, gracias por la respuesta, he leído eso en muchas webs, pero.... no, no me funciona.

Este es el código del archivo XSL. Falta el XML, pero en este caso no es relevante.

Código PHP:
<?xml version="1.0" encoding="iso-8859-1"?><!-- DWXMLSource="date_ultimo.xml" -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>

 <Body>

  <h1>Tipos de posibles representaciones para el tipo "date".</h1>

    <Script language="JavaScript">
        // Variables    
                      XML = new Array();
            XML[0] = new Array();
            XML[1] = new Array();
            XML[2] = new Array();
                
            Pos = 0;

// Función para añadir las elecciones de representación del usuario.

function AñadirEleccion(Tabla, Campo, CodRep, NombreRep){
    
//Añado la información de la representacion en XML al array
    XML[Pos][0]=Tabla;
    XML[Pos][1]=Campo;
    XML[Pos][2]=CodRep;          
    XML[Pos][3]=NombreRep; 
        
                    
Pos = Pos + 1;
        
    }


</Script>


// Más código no relevante...bla, bla,.....

 </Body>
 </html>

 </xsl:template>
</xsl:stylesheet>
Cuando Pos vale 3 ó 4 el script falla. No redimensiona automaticamente, no lo hace ¿Por qué?

Un saludo y gracias.
  #4 (permalink)  
Antiguo 07/07/2007, 01:56
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Redimensionar arrays dinámicamente.

Cita:
Iniciado por NeoKaisser Ver Mensaje
Cuando Pos vale 3 ó 4 el script falla. No redimensiona automaticamente, no lo hace ¿Por qué?
Bueno, es normal que falle, pues tal y como está no existe la posición 3 ni en adelante. Si quieres que existan debes añadirlas. Si no existe algo no puedes acceder a ello. Para eso debes incrementar el array cada vez que haga falta de la forma en la que te sugerí más arriba o usando la misma variable Pos.

Puedes simplemente iniciar el array principal y la variable pos

Código:
XML = new Array();
Pos = 0;
y hacer que la función se encargue de agregar elementos al array en cada llamada.
Código:
function AñadirEleccion(Tabla, Campo, CodRep, NombreRep){
    
//Añado la información de la representacion en XML al array
    XML[Pos] = new Array();
    XML[Pos][0]=Tabla;
    XML[Pos][1]=Campo;
    XML[Pos][2]=CodRep;          
    XML[Pos][3]=NombreRep; 
        
                    
Pos = Pos + 1;
        
    }
Teóricamente habría de funcionar sin problemas
__________________
Javascript Códigos - Bambú difunde
  #5 (permalink)  
Antiguo 07/07/2007, 10:14
 
Fecha de Ingreso: julio-2003
Mensajes: 240
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: Redimensionar arrays dinámicamente.

Hola!

Lo estaba haciendo mal, intentaba XML = new Array(); en lugar de
XML[Pos] = new Array();

Ya me funciona como quería.

Muchas gracias !!!
  #6 (permalink)  
Antiguo 07/07/2007, 12:54
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Redimensionar arrays dinámicamente.

Muchas de nadas

Un saludo
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 11:06.