Almacenando datos en JavaScript.
Básicamente, un programa informático lee, manipula y, quizás, guarda datos. Estos se obtienen de solicitudes de información al usuario, archivos de texto, bases de datos, archivos xml, etc. En su caso, se guardarán aquellos datos nuevos o modificados que interese conservar. Para manipular datos, el lenguaje de programación dispone, internamente, de una serie de técnicas que los almacenen temporalmente (mientras dure la ejecución del programa). Aquí se estudiarán dichas técnicas en el caso del lenguaje de programación JavaScript. Para seguir provechosamente este artículo sería conveniente que usted probara los ejemplos que acompañan las explicaciones. Para facilitarle la tarea puede hacer uso de JavaScript Shell, un pequeño programa capaz de interpretar sus scripts. No necesitará, por lo tanto, de ningun navegador para ejecutar programas JavaScript. En el siguiente enlace, usted puede obtener JavaScript Shell [141 KB]. Aprenderá, además, su sencilla utilización.
Indice. 1.- Arrays simples. Los arrays simples, también llamados "tablas" o "matrices", son el método más común y simple de almacenar datos. Técnicamente, un Array es un objeto intrínseco de JavaScript. El único requisito requerido es que los datos almacenados
en el array sean todos del mimso tipo. ¿Qué tipos se admiten? Cadenas, números, objetos, arrays, true, false, null. Definiendo Arrays Simples. // método 1º: definiendo y poblando simultáneamente var tabla = new Array(25,35,12,34); var tabla = [25,35,12,34]; // método 2º: definiendo primero, poblando después // cualquiera de las siguientes es válida // en unos casos se expecifica el número de elementos // en otros no var tabla = new Array(); var tabla = new Array(7); var tabla = []; var tabla = [7]; // poblando tabla[0] = "lunes"; tabla[1] = "martes"; tabla[2] = "miércoles"; tabla[3] = "jueves"; tabla[4] = "viernes"; tabla[5] = "sábado"; tabla[6] = "domingo";
Propiedades y Métodos de los arrays.
Todo objeto de JavaScript, tanto los intrínsecos como los definidos por el programador, tiene propiedades y/o métodos. Los del objeto Array que nos interesan son: Propiedad: - length
Def: devuelve al número de elementos del array; Uso: tabla.length
Métodos: - concat
Def: este método añade al final de un array los elemementos de otro array. Uso: var a = [] , b = [] , c = []; c = a.concat(b); - join
Def: este método crea un texto con los elementos del array separados por un carácter que se especifique. Uso: var a = []; var texto = a.join("#"); Ejemplo: var a = [1,2,3]; var texto = a.join("-"); // devuelve texto = "1-2-3" - reverse
Def: este método genera un nuevo array transponiendo los elementos del array al que le aplicamos dicho método. Uso: var a = []; var b = a.reverse(); - slice
Def: devuelve al fragmento del array comprendido entre los elementos cuyas posicionespasemos como parámetros (inicial, final); si se utiliza un solo parámetro es desde esa posicion hasta el final. Uso: var a =[]; a.slice(inicial[opcional:,final]); Ejemplo: var $tabla = ["lunes","martes","miercoles","jueves"]; var $aux = $tabla.slice(0,2); print($aux.join("=")); //devuelve "lunes=martes" var $aux2 = $tabla.slice(2); print($aux2.join("=")); //devuelve "miercoles=jueves" - sort
Def: ordena los elementos de un array. Uso: var a = []; a.sort(); Ejemplo: var $tabla = ["lunes","martes","miercoles","jueves"]; print($tabla.sort()); // devuelve "jueves,lunes,martes,miercoles"
Accediendo a elementos de los Arrays Simples. Accediendo a elementos individuales del array: - nombre_array[índice] (índice = 0,1,...,n-1) (n = nombre_array.length)
Accediendo a todos los elementos del array:
- Método 1: bucle for
Ejemplo: for(i = 1; i< $tabla.length; i++){ ... } - Método 2: bucle for...in
var $tabla = ["lunes","martes","miercoles","jueves"]; for (indice in $tabla){ print (indice+ "=>" + $tabla[indice]); } /*devuelve: 0=>lunes 1=>martes 2=>miercoles 3=>jueves */ 2.- Arrays Múltiples.Definición. Un array múltiple es un array simple cuyos elementos son, a su vez arrays de la misma dimensión. En consecuencia, no existen propiamente hablando arrays múltiples. Un array múltiple de dimensión mxn es un array simple de m elementos, siendo cada uno de esos elementos un array de
n elementos. Ejemplo 1. // definiendo un array $tabla 2 x 5 var matriz = new Array(); matriz[0] = new Array(1,2,3,4,5); matriz[1] = new Array(6,7,8,9,0); print (matriz[1].join("%")); // devuelve "6%7%8%9%0" print (matriz[0][2]); // devuelve "3" Ejemplo 2. // array $tabla 2 x 3 var $tabla = [[1,2,3],[3,4,5]]; for ($indice in $tabla){ print ($indice+ "=>" + $tabla[$indice]); } /* devuelve: 0=>1,2,3 1=>3,4,5 */ Ejemplo 3. // array $tabla 2 x 3 var $tabla = [[1,2,3],[4,5,6]]; for ($i in $tabla){ for ($j in $tabla[$i]){ print ("(" +$i + "," + $j+ ") = " + $tabla[$i][$j]); } } /* devuelve: (0,0) = 1 (0,1) = 2 (0,2) = 3 (1,0) = 4 (1,1) = 5 (1,2) = 6 */
3.- Arrays Asociativos.Definición. Un array asociativo es un array cuyos índices no son numéricos. Más concretamente, los índices son cadenas. En Perl o PHP también se conocen como hash. En estos arrays usamos "{}" (llaves) en vez de "[]" (corchetes) a la hora de definirlos. Ejemplo 1. // definición de un array asociativo var $hash = {"DNI":"123","Nombre":"José","Apellidos":"López"}; print ($hash["Nombre"]); //devuelve "José" //devuelve lo mismo si usamos la notación dot print($hash.Nombre) Ejemplo 2. // otro método: var $hash = {}; $hash["DNI"]="123"; $hash["Nombre"]="José"; $hash["Apellidos"]="López"; print ($hash["Nombre"]); // devuelve "José"
Ejemplo 3. // y otro: var $hash = new Array(); $hash["DNI"]="123"; $hash["Nombre"]="José"; $hash["Apellidos"]="López"; print ($hash["Nombre"]); // devuelve "José" Ejemplo 4. var $tabla = {"numeros":[1,2,3],"palabras":["Jose","Miguel"]}; for ($i in $tabla){ for ($j in $tabla[$i]){ print ("(" +$i + "," + $j+ ") => " + $tabla[$i][$j]); } } /* devuelve: (numeros,0) => 1 (numeros,1) => 2 (numeros,2) => 3 (palabras,0) => Jose (palabras,1) => Miguel */ 4.- Objetos.
No es su funcionalidad principal pero podríamos usar objetos para almacenar datos. Se trataría de objetos con propiedades pero no con métodos. Ejemplo 1. function MyObjt(arr1,arr2){ this.numeros = arr1; this.palabras = arr2; } var _arr1 = [1,2,3]; var _arr2 = ["Jose","Miguel"]; var $hash = new MyObjt(_arr1,_arr2); print ($hash["numeros"]); print ($hash["numeros"][0]); print ($hash.palabras); print ($hash.palabras[1]) /* devuelve: 1,2,3 1 Jose,Miguel Miguel */ Ejemplo 2. function MyObjt(arr1,arr2){ this.numeros = arr1; this.palabras = arr2; } var _arr1 = [1,2,3]; var _arr2 = ["Jose","Miguel"]; var $hash = new MyObjt(_arr1,_arr2); for ($i in $hash){ for ($j in $hash[$i]){ print ("(" +$i + "," + $j+ ") => " + $hash[$i][$j]); } } /* devuelve: (numeros,0) => 1 (numeros,1) => 2 (numeros,2) => 3 (palabras,0) => Jose
(palabras,1) => Miguel */ La comparación entre este segundo ejemplo y el ejemplo cuarto del apartado anterior nos muestra que definir un objeto y definir un array asociativo no son más que dos maneras de realizar el mismo proceso. 5.- Conclusiones. Combinando estas formas "puras" de almacenamiento de datos obtenemos formas "mixtas". Por ejemplo, formar arrays de objetos, arrays asociativos de matrices simples o múltiples. Y un largo etc. Es literalmente imposible que usted no encuentre en JavaScript un método adecuado para almacenar sus datos. Por si esto fuera poco, existen ciertos desarrollos que enriquecen aún más nuestras posibilidades: -
jsdb [GPL]. Base de Datos en Javascript. Author: Agustín Garcia i Moll. Este original paisano catalán ha ideado una manera de que podamos ejecutar sentencias SQL (CREATE TABLE, SELECT, INSERT, etc.) en bases de datos escritas en JavaScript. Además de sorprendente, el experimento es mucho más que curioso. Más información sobre jsdb
- Json. Inicialmente pensado para sustituir al xml en transmisiones de datos entre clientes y sevidores esta aplicación JavaScript ha demostrado ser una herramienta tan potente que ya existen versiones para otros muchos lenguajes (Java, PHP, Perl, Python, etc.) Más información sobre Json
|
MenúCategorías
Lo Último Mis programas Matemáticas Geometría Programación WEB Flash MX Variados |