Plataformas Móviles
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);
Calcular la suma de todos los valores de una lista de números
// calcular la suma total de listaDeNumeros
var sumaTotal = 0;
for(i = 0; i < listaDeNumeros.length; i++) {
console.log("Posición: ", i);
console.log("Valor en posición: ", listaDeNumeros[i]);
sumaTotal = sumaTotal + listaDeNumeros[i];
console.log("Suma hasta el momento: ", sumaTotal);
}
console.log("Suma total: ", sumaTotal);
// calcular la suma total de listaDeNumeros (otra versión)
var sumaTotalv2 = 0;
listaDeNumeros.forEach(e => sumaTotalv2 += e)
console.log("Suma total (v2): ", sumaTotalv2);
Multiplicar todos los valores
// multiplicar todos los numeros por 5
var listaPor5 = [];
for (let i = 0; i < listaDeNumeros.length; i++) {
// accedo al valor en posición actual y lo multiplico por 5
var valorActual = listaDeNumeros[i];
var resultadoPosicionActual = valorActual * 5;
// modifico el valor en la lista
listaPor5[i] = resultadoPosicionActual;
}
console.log("lista resultado: ", listaPor5);
// multiplicar por 5
var listaPor5opcion2 = listaDeNumeros.map(e => e * 5);
console.log("lista resultado v2: ", listaPor5opcion2);
Comentario extra: Para intercambiar 2 posiciones de una lista es necesario usar una variable temporal
var temporal = nuevaLista(0); nuevaLista[0] = nuevaLista[1]; nuevaLista[1] = temporal;
Una opción para agregar elementos es operar con los índices directamente
// agegar un nuevo elemento al final de la lista
var nuevoValor = 42;
var nuevaPosicion = listaDeNumeros.length;
listaDeNumeros[nuevaPosicion] = nuevoValor;
console.log("lista con nuevo valor: ", listaDeNumeros);
Esta opción puede traer complicaciones, dejando listas inconsistentes al agregar o eliminar elementos
// agregar otro elemento
listaDeNumeros[99] = nuevoValor;
console.log("lista con nuevo valor en posición 99", listaDeNumeros);
// eliminar elemento de una lista
delete listaDeNumeros[99];
console.log("lista con nuevo valor eliminado", listaDeNumeros);
// en este punto la longitud de la lista quedó inconsistente
console.log(listaDeNumeros.length);
Otra 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.push(nuevoValor);
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)
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
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: {},
}
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);
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;