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
|