Foros del Web » Programando para Internet » Javascript »

Pasar texto a array multidimensional

Estas en el tema de Pasar texto a array multidimensional en el foro de Javascript en Foros del Web. Hola a todos. Tengo un textbox co un texto separado por ";" La estructura de este texto es lago del estilo: P1;R123;R234;P2;R456;R567. Se traduce como ...
  #1 (permalink)  
Antiguo 10/06/2012, 07:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
Pasar texto a array multidimensional

Hola a todos. Tengo un textbox co un texto separado por ";" La estructura de este texto es lago del estilo: P1;R123;R234;P2;R456;R567. Se traduce como la Pregunta 1, lleva asociada las Respuesta 123 y 234. Y, la Pregunta 2, las Respuestas 456 y 567. Para ello quiero montarme un array multidimensional, entre Preguntas y Respuestas.

Lo primero que he hecho es pasar el texto a un array unidimensional, mediante split. Así tengo un array del estilo:

a_unidim[0] = P1
a_unidim[0] = R123
a_unidim[0] = R234
a_unidim[0] = P2
a_unidim[0] = R456
a_unidim[0] = R567

Pues aquí me quedo clavado. JS, por lo que he leído ( y tristemente comprobado ) funciona con estructuras fijas. Es decir, para monta el multidimensional debería:

a_preg_resp[0] = a_pregunta_1
a_preg_resp[0] = a_pregunta_2


Donde a_pregunta_1, sería el array de la Pregunta 1 es decir:

a_pregunta_1[0] = P1
a_pregunta_1[1] = R123
a_pregunta_1[2] = R234

Pero claro, el texto es dinámico. No me voy a definir 100 arrays fijos y usuarlos según lso necesite.

Lo que tampoco cuela es hacer un bucle sobre el array unidimensional, manipulándolo, y haciendo algo del estilo:

a_preg_resp[0][0] = pregunta1
a_preg_resp[0][1] = respuesta1
a_preg_resp[0][2] = respuesta2

Alguien ha tenido que pasar alguna vez un array unidimiensional a otro multidimensional? O se le ocurre cómo podría hacerlo?

Muchas gracias!
  #2 (permalink)  
Antiguo 10/06/2012, 07:22
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Pasar texto a array multidimensional

PERDÓN!! CORRGIJO EL ENUNCIADO DE MI PROBLEMA, EL COPY-PASTE ME HA JUGADO UAN PALA FAENA... QUERÍA DECIR LO SIGUIENTE:

Lo primero que he hecho es pasar el texto a un array unidimensional, mediante split. Así tengo un array del estilo:

a_unidim[0] = P1
a_unidim[1] = R123
a_unidim[2] = R234
a_unidim[3] = P2
a_unidim[4] = R456
a_unidim[5] = R567

Pues aquí me quedo clavado. JS, por lo que he leído ( y tristemente comprobado ) funciona con estructuras fijas. Es decir, para monta el multidimensional debería:

a_preg_resp[0] = a_pregunta_1
a_preg_resp[1] = a_pregunta_2
  #3 (permalink)  
Antiguo 10/06/2012, 08:19
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Pasar texto a array multidimensional

recién levantada no doy para mas
Cita:
str = 'P1;R123;R234;P2;R456;R567';

arr = str.split(';');

var arr2= new Array();

ini = 0;
fin = 3;
indice = 0;

for( var i = 0; i < arr.length; i+=3) {
arr2[indice++] = arr.slice(ini,fin);

ini+=3;
fin+=3;

}

console.log(arr2[0][0]);
console.log(arr2[1][2]);
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 10/06/2012, 09:51
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Pasar texto a array multidimensional

PERFECTO! Genial!! Justo lo que necesitaba!! Muchas gracias!!
  #5 (permalink)  
Antiguo 10/06/2012, 11:55
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Pasar texto a array multidimensional

Hola todos.

IsaBelM : Usted medio dormida razona mejor que yo después del almuerzo. Lo que es una perogrullada que en este Foro no sorprende a nadie.

lemmy2011 : en realidad no entendí lo que querías.
Más tarde, mientras mascaba una tarta de calabaza, me pareció haber adivinado; me senté en la máquina y terminé una forma de resolver eso que había interpretado, pero como de costumbre se me adelantaron.
Y mejor así, porque yo creí que la cantidad total de preguntas, y la cantidad total de respuestas a cada pregunta, era lo que variaba y no podías contar.

Me confundí con

Cita:
Pero claro, el texto es dinámico. No me voy a definir 100 arrays fijos y usuarlos según lso necesite.
Por eso me puse a armar un escript que te hiciese tantos arrays unidimensionales como preguntas hubiere. Y tantos arrays bidimensionales como respuestas tuvieren, incluyendo a la pregunta como primer elemento.

Daba por descontado que los prefijos "P" y "R" para cada una se mantenían, así los aproveché para inventar esto. Que pongo en tu tema porque ya lo hice, sé que al fin no te sirve.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript">

var cuestionario = [];

function arrea() {
var cadena = document.getElementById("inp").value;

var corte = cadena.split("P"); 

for(i=1; i<corte.length; i++) {

var recorte = "P"+corte[i].split(";"); 

cuestionario[i-1] = new Array();

cuestionario[i-1] = recorte.split(","); 

document.getElementById("txt").value += "cuestionario["+(i-1)+"] = ["+cuestionario[i-1]+"] \r\n"
}
}


function muestra() {
var elem = cuestionario[document.getElementById("ar0").value][document.getElementById("ar1").value];

document.getElementById("ar2").value = elem;
}
</script>

</head>
<body>
<input value="P1;R123;R234;P2;R456;R567;R578" id=inp> <br>
<input type=button onclick="arrea()" value="crea Array BiDi"> <br>
<textarea id=txt style="height: 6em; width: 16em"></textarea><br>
<strong>cuestionario[<input size=1 id=ar0 value=0>][<input size=2 id=ar1 value=0>] ► <input id=ar2>
</strong><br>
<input type=button onclick="muestra()" value="muestra elemento Array BiDi">

</body>
</html>
(Ahora que lo pienso, hay mejores formas de hacerlo.)
  #6 (permalink)  
Antiguo 10/06/2012, 13:59
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Pasar texto a array multidimensional

Cita:
Iniciado por furoya Ver Mensaje
Hola todos.

IsaBelM : Usted medio dormida razona mejor que yo después del almuerzo. Lo que es una perogrullada que en este Foro no sorprende a nadie.
no era yo quien razonaba, sino el alcohol
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 10/06/2012, 15:58
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Pasar texto a array multidimensional

Qué mal ejemplo, mujer. Qué mal ejemplo.
  #8 (permalink)  
Antiguo 26/09/2012, 11:57
 
Fecha de Ingreso: junio-2010
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Pasar texto a array multidimensional

Una mejora solución: usar jquery e implementar "jquery.protify-0.3.js", luego:

$.protify(arr).eachSlice(3);

y con esa única línea tienes un array como: [ [P1,R123,R234], [P2,R456,R567] ]
  #9 (permalink)  
Antiguo 26/09/2012, 12:47
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Pasar texto a array multidimensional



¡Con esa sola linea, y cincuenta más del jquery!


Bienvenido, fingram, ¡pero un poco más de criterio, caramba!

Etiquetas: funcion, js, multidimensional
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 14:21.