Pseudo Base de datos con arrays

No es que vayamos a crear una base para manejar con sql, solo se trata de almacenar una serie de datos agrupados y usarla para localizar información. Es una base estática: no se pueden añadir registros, pero si se puede consultar o buscar. Por ejemplo puede ser útil para tests online sencillos.

Solución

<script>

function buscar(matriz, clave) {

   let largo, ancho, visto, ind;

   largo = matriz.length;

   ancho = matriz[0].length;

   visto = -1;

   ind = 0;

   while (visto < 0) {

     if (clave == matriz[ind][0])

          visto = ind;

     ind++;

    }

   return visto;

}

let libros = new Array(6);

function rellenar(libros){

   let ind;

   for (ind=0; ind < 10; ind++){

      libros[ind] = new Array(3);

   }

   ind = 0;

   libros[ind][0] = "Gabriel García Márquea";

   libros[ind][1] = "Cien Años de Soledad";

   libros[ind][2] = "Edhasa";

   ind++;

   libros[ind][0] = "Mario Benedetti";

   libros[ind][1] = "Geografías";

   libros[ind][2] = "Alfaguara";

   ind++;

   libros[ind][0] = "Eduardo Galeano";

   libros[ind][1] = "El Libro de los abrazos";

   libros[ind][2] = "Catálogos";

   ind++;

   libros[ind][0] = "Juan Rulfo";

   libros[ind][1] = "Pedro Páramo";

   libros[ind][2] = "Paidós";

   ind++;

   libros[ind][0] = "Alejo Carpentier";

   libros[ind][1] = "Los pasos perdidos";

   libros[ind][2] = "Destino";

   ind++;

   libros[ind][0] = "Julio Cortázar";

   libros[ind][1] = "Casa tomada";

   libros[ind][2] = "Sudamericana";

   }

</script>

Este es el contenido de la seeción body de la página

<body>

<! Ahora toca probar todo-->

<p>Buscamos a Julio Cortázar</p>

<script>

rellenar(libros);

var quien = "Julio Cortázar";

donde = buscar(libros, quien);

if (donde > 0)

   document.write(quien+" es autor de "+libros[donde][1]+"<br> editorial: "+libros[donde][2]+"<br>");

else

   document.write(quien+ " no está en esta lista<br>");

</script>

</body>

Explicación

Este script te permite usar una matriz o array como una "base de datos", en este ejemplo aplicada a una biblioteca. Solo se busca por autor.

Aquí la matriz o array se usa para crear una tabla, o sea, una lista de valores donde cada valor es a su vez otra lista (registros). Lo más práctico es imaginarla como una tabla.

La función busca un valor clave en el array de valores, comprueba si este valor es igual al contenido en la columna 0 de cada fila de la tabla (clave == matriz[ind][0]). Una vez hallada la clave la función devuelve el índice o lugar donde se encuentra el valor buscado. Si no la encuentra devuelve -1

En el ejemplo los valores claves para la búsqueda están en el primer índice de la matriz (la primera columna de la tabla) pero igualmente podría usarse cualquier otra columna.

Como usarlo

Bueno lo primero que hacemos es crear la pseudo base de datos (a la que llamo libros) . Lo hacemos fuera de cualquier función para que la sea de acceso global y pueda usarse desde cualquier parte de la página

Ahora toca rellenar con los datos. En nuestro caso será una tabla con tres columnas (para el autor, título y editorial) y seis filas (para seis libros, pero pueden ser más). Innvocamos la función rellenar(libros)

Ya tenemos nuestra lista de datos libros rellena, ahora toca comprobar si funciona.

En el cuerpo de la página colocamos el script que véis a la izquierda de estas lineas y abajo.

Lo primero es llamar a la función rellenar(libros) para que rellene la tabla con los datos. A continuación busca un autor (en este caso Julio Cortázar). Si lo encuentra la función devuelve el lugar de la lista donde está. Con este índice ya podemos leer su libro y editorial:

El libro es         libros[donde][1]
La editorial es   libros[donde][2]

Para presentar el resultado se usa document.write por simplicidad, en una aplicación más elaborada se usaría un bloque en el que anotar el resultado.

Si quieres trabajar este ejemplo puedes añadir un formulario para leer el nombre del autor.

En nuestro ejemplo hemos supuesto que los nombres de autores no se repiten, pero ¿y si no fuera así?.

Recuerda que esto es solo un script que puede usarse tal cual en muchos casos, pero que realmente sirrve como base  ara desarrollar algo más completo.