Clase 9 - Listas y Objetos en JavaScript

Listas

Vimos el tipo de datos lista (array) en JavaScript, y algunos ejemplos de código.

Definir listas

var listaDeNumeros = [1, 23, 56, 1234];
var listaDeStrings = ['a', 'abc'];
var listaDeFloats = [1.23, 2.34, 3.45];
var listaDeBooleanos = [false, false, true];
var listaDeMultiplesTipos = [1, 'a', 1.23, false];

Acceder a Valores de una lista

console.log("acceder a una posicion: ", listaDeNumeros[0]);
console.log("acceder a la longitud: ", listaDeNumeros.length);

Agregar Elementos

Una opción para agregar elementos es usar los métodos push() y unshift() de listas.

var nuevoValor = 33;

// agregar un elemento al final de una lista
listaDeNumeros.push(nuevoValor);

// agregar un elemento al inicio de una lista
listaDeNumeros.unshift(nuevoValor);

Eliminar elementos

Para eliminar elementos de una lista tenemos los métodos pop() y shift() de listas.

// eliminar un elemento al final de una lista, y obtenerlo
let ultimoNumero = listaDeNumeros.pop();

// agregar un elemento al inicio de una lista
let primerNumero = listaDeNumeros.shift();

Agregar y eliminar desde una posición

Vimos el método splice() que sirve para agregar y eliminar elementos de manera simultanea. Más detalles en la documentación: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

Filtrar Listas

Se puede usar el método filter() filtrar los elementos de una lista. La función de filtro que recibe filter() debe devolver true para que el elemento permanezca en la lista resultante y false para que sea eliminado de la lista resultante.

var listaDePreposiciones = ['a', 'ante', 'bajo', 'cabe', 'con', 'contra', 'de', 'desde', 'durante', 'en', 'entre', 'hacia', 'hasta', 'mediante', 'para', 'por', 'según', 'sin', 'so', 'sobre', 'tras', 'versus', 'vía'];

// me quedo con las palabras de al menos 3 letras de largo
var listaFiltrada = listaDePreposiciones.filter((elementoActual) => {
    return elementoActual.length > 3;
})
console.log("lista de preposiciones filtrada", listaFiltrada)
console.log("lista de preposiciones original", listaDePreposiciones)

Listas dentro de listas

Se pueden definir listas dentro de otras listas

var listaAnidada = [ 1, 2, 3, [7, 8, 9], 4, 5, 6 ]
listaAnidada[3][1] // accedo al 8

Objetos

Declaración y creación de Objetos

var objetoAlumno = {
    nombre: "Juan",
    apellido: "Pérez",
    "edad": 18,
    "nombre.y.apellido": "Juan Pérez II",
};

Acceder los valores dentro de los campos (atributos, claves) de un objeto

// acceso por sintáxis de punto
alumno.edad;

// acceso por sintáxis de corchetes
alumno["edad"]
alumno["nombre.y.apellido"]

// el acceso por corchetes se puede usar para acceder a campos con nombres calculados
var campoImportante = "nombre";
alumno[campoImportante]
campoImportante = "apellido";
alumno[campoImportante]

Tipos de valores dentro de los campos de un objeto

var objetoConDatosDeDistintosTipos = {
    unValorBooleano: true,
    unValorNumerico: 2,
    unValorString: "aaaaa",
    unValorLista: [],
    unValorObjeto: {},
}

Listas y Objetos

Queremos almacenar un listado de alumnos. Evaluamos distintas opciones

// la posicion indica que alumno refiere en los listados
var listadoDeNombres = ["Juan", "Sahid"]
var listadoDeApellidos = []
var listaDeEdades = [18, 19, 20]
// objeto con todos los alumnos
var objetoDeAlumnos = {
    nombre_1: "Juan",
    apellido_1: "",
    edad_1: 18,

    nombre_2: "Sahid",
    apellido_2: "",
    edad_2: 19,
}
// Un objeto para cada alumno, dentro de otro objeto.
var objetoListaAlumnos = {
    alumno_1: {
        nombre: "Juan",
        apellido: "",
        edad: 18,
    },
    alumno_2: {
        nombre: "Sahid",
        apellido: "",
        edad: 19,
    }
}
// un objeto para cada alumno, una lista para contener a todos los alumnos
var listaDeAlumnos = [
    {
        nombre: "Juan",
        apellido: "",
        edad: 18,
    },
    {
        nombre: "Sahid",
        apellido: "",
        edad: 19,
    },
]
// Agrego un nuevo alumno al listado
listaDeAlumnos[2] = {
    nombre: "Agustin",
    apellido: "",
    edad: 19,

}
console.log("Lista Nueva de Alumnos: ", listaDeAlumnos);

Creo un nuevo alumno y lo agrego al listado

function crearNuevoAlumno(nombre, apellido, edad) {
    return {
        nombre,
        apellido,
        edad,
    };
}
var nuevaListaDeAlumnos = agregarAlumno(listaDeAlumnos, datosDelAlumno);

Accediendo a valores dentro de una lista de objetos

var alumnoA = {
    nombre: "Juan",
    apellido: "",
    edad: 18,
};

var alumnoB = {
    nombre: "Sahid",
    apellido: "",
    edad: 19,
};

// creo un listado de alumnos
var listaDeAlumnosEjemplo = [
    alumnoA,
    alumnoB,
];

// accedo a campos dentro de los alumnos, dentro del listado
var nombreDelAlumno = listaDeAlumnosEjemplo[1].nombre;
var apellidoDelAlumno = listaDeAlumnosEjemplo[1].apellido;