Skip to content

Latest commit

 

History

History
434 lines (347 loc) · 11 KB

File metadata and controls

434 lines (347 loc) · 11 KB

Clase 8

Arrays

  • Creando un array:

    var arreglo = [];
    arreglo = [1, "platano", "piscina", "manzana", true];
  • Usando el Índice:

    arreglo[1];
  • Cambiar un valor del Índice:

    arreglo[0] = "fresa";
    arreglo[4] = "pera";
    arreglo[2] = "limón";
  • delete sobrescribe a undefined

    delete arreglo[0];
  • Elementos vacios:

    arreglo[0] = undefined;

Propiedades

  • Índice total:

    	arreglo.length;
  • Usando el Índice total en un bucle:

    var numeros = [1, 2, 3, 4, 5];
    for (var i = 0; i < numeros.length; i++) {
      numeros[i] *= 10;
    }

Métodos

  • .push() Añadir elemento al índice:

    arreglo.push("nuevo");
  • .pop() Eliminar el último elemento del índice:

    	arreglo.pop();
  • .shift() Eliminar el primer elemento:

    	arreglo.shift();
  • .splice() Borrar:

    	var manzana = arreglo.splice(3, 1);
  • .map():

    var arreglo = ["plátano", "fresa", "lima", "manzana"];
    var resultado = arreglo.map(function (elemento){return elemento + " modificado!"});
    console.log(resultado);
  • .isArray():

    	var arreglo = [1,2,3]
    	
    	// true
    	Array.isArray([1]);
    	Array.isArray(arreglo);
    	
    	// false
    	Array.isArray();
    Array.isArray({});
    Array.isArray(null);
    Array.isArray(undefined);
  • .concat() Retorna un nuevo Array con los Arrays especificados concatenados:

    • Dos Arrays:
    	var arreglo = ['a', 2, true];
    	var arreglo2 = [1, 2, 4];
    
    	var nuevaArray = arreglo.concat(arreglo2);
    
    console.log(nuevaArray); 
    • Múltiples Arrays:
    	var arreglo = ['a', 2, true];
    	var arreglo2 = [1, 2, 4];
    	var otroArreglo = ['abc', 1, false]
    
    	var nuevaArray = arreglo.concat(arreglo2, [5.25, 100], otroArreglo);
    
    console.log(nuevaArray);
  • .every() verifica si todos los elementos en el arreglo pasan la prueba implementada por la función dada:

    function tamañoValido(elemento, indice, arrreglo) {
      return elemento >= 10;
    }
    [12, 5, 8, 130, 44].every(tamañoValido);   // false
    [12, 54, 18, 130, 44].every(tamañoValido); // true    
  • .filter() Crea un nuevo array con aquellos elementos que cumplan la condición:

    function tamañoValido(elemento) {
      return elemento >= 10;
    }
    var filtrados = [true, 134, 10, 0, null, "Hola"].filter(tamañoValido);
  • .forEach() Se ejecuta la función por cada elemnto del array:

    function logger(element, index, array) {
        console.log("array[" + index + "] = " + element);
    }
    [2, 5, 9].forEach(logger);
  • .indexOf() Devuelve la posición donde se escuentra el elemnto o -1 si no lo encuentra:

    var array = [2, 5, 9];
    var index = array.indexOf(9); // 2
    var index = array.indexOf(12); // -1
  • .join() Une todos los elementos en una cadena:

    var array = ['dato1', 2, , 'masDatos'];
    var datosJuntos = array.join();      // 'dato1,2,masDatos'
    var datosJuntos2 = array.join('');    // 'dato12masDatos'
    var datosJuntos3 = array.join(' + '); // 'dato1 + 2 + masDatos'
  • .lastIdexOf() Devuelve la posición del último elemento que coincide o -1 si no lo encuentra:

    var array = [7, 1, 3, 7];
    array.lastIndexOf(7); // 3
    array.lastIndexOf(2); // -1
  • .reduce() Aplica una función a un acumulador y a cada valor de un vector para reducirlo a un único valor:

    var reduce = [0,-3,1,2,4,6].reduce(function(valorAnterior, valorActual, indice, vector){
      return valorAnterior + valorActual;
    });
    console.log(reduce); // 10
  • .reduceRight() Aplica una función a un acumulador y a cada valor (de izq. a dcha.) de un vector para reducirlo a un único valor:

    var reduceRight = [0,-3,1,2,4,6].reduce(function(valorAnterior, valorActual, indice, vector){
      return valorAnterior + valorActual;
    });
    console.log(reduceRight); // 10
  • .reverse() Invierte el orden de un Array:

    var miArray = ['uno', 2, true, 'más datos...'];
    miArray.reverse(); 
    console.log(miArray) // ["más datos...", true, 2, "uno"]
  • .slice() Devuelve un nuevo Array con un segmento determinado del Array original:

    var frutas = ['Platano', 'Naranja', 'Limón', 'Manzana', 'Mango'];
    var citricos = frutas.slice(1, 3);
    console.info(citricos);
  • .some() Verifica si alguno de los elementos en el arreglo pasan la prueba implementada por la función dada::

    function tamañoValido(elemento, indice, arrreglo) {
      return elemento >= 10;
    }
    [12, 5, 8, 130, 44].some(tamañoValido);   // true
    [12, 54, 18, 130, 44].some(tamañoValido); // true
  • .sort() **:

    var frutas = ['Platano', 'Naranja', 'Limón', 'Manzana', 'Mango'];
    frutas.sort(); // ["Limón", "Mango", "Manzana", "Naranja", "Platano"]
    
    var miArray = ['uno', 2, true, 'más datos...'];
    miArray.sort(); // [2, "más datos...", true, "uno"]
  • .toLocalString() Retorna como string (configuración regional) todos los elementos:

    var numero = 1337.89;
    var fecha = new Date();
    var miArray = [numero, fecha, 'más datos'];
    
    var arrayConvertida = miArray.toLocaleString(); 
    console.log(arrayConvertida);     
  • .toString() Retorna una cadena de texto con todos los nombres:

    var amigos = ['Luis', 'Carlos', 'Marco', 'Eduardo'];
    console.log(amigos.toString());
  • .unShift() Añade nuevos elementos al principio del array y devuelve la longitud actualizada:

    var miArray = [1, 2];
    
    miArray.unshift(true, "otros datos...");
    console.log(miArray);

Ejercicios

1 - Diseña un algoritmo que cuente las veces que aparece una determinada letra en una frase.

	function cuantasVeces (letra, texto) {
		
		var totalVeces = 0;
		var seleccionTexto = texto.split("");
		
		for (var i = 0; i <= seleccionTexto.length; i++) {
			
			if (seleccionTexto[i] === letra){
				totalVeces++
			};
			
		};
		
		return {
			letra: letra, 
			totalVeces: totalVeces, 
			texto: texto
		}
	}

var nombreVar = cuantasVeces ("h", "hola");


if(nombreVar.totalVeces > 0){
	console.log("Tenemos resultados....")
}

console.log("Se repite "+nombreVar.letra+" "+nombreVar.totalVeces+" veces... en "+nombreVar.texto)

2 - Junta estos tres Arrays ["Oscar", ...], [9897667, ...], [false, ...] de tal forma que construyan un único Array anidado [["Oscar", 9897667, false], [etc...]]

  • Opcional: Ordena los números pares e impares en sus respectivos arrays
	var arreglo1 = ["Oscar", "Pedro", "Marco", "Juana"],
		arreglo2 = [9897667, 81721623, 91823871, 71236123],
		arreglo3 = [false, true, true, false];
	
	var anidacion = [];
	
	for (var i = 0; i <= arreglo1.length; i++){
		var resumen = [arreglo1[i], arreglo2[i], arreglo3[i]];
		anidacion.push(resumen);
	}
	
	console.log("El resultado es %O", anidacion);
  • Variante (Diferentes longitudes)
	var arreglo1 = ["Oscar", "Pedro", "Marco", "Juana", true, 4, 12, 12],
	    arreglo2 = [9897667, 81721623, 91823871, 71236123],
	    arreglo3 = [false, true, true, false];
	
	// Saber valor Máximo
	var maximo = Math.max(arreglo1.length, arreglo2.length, arreglo3.length);
	
	// Nivelar - Fase 1:
	arreglo1[maximo] = "";
	arreglo2[maximo] = "";
	arreglo3[maximo] = "";
	
	// Fix
	arreglo1.pop();
	arreglo2.pop();
	arreglo3.pop();
	
	
	var anidacion = [];
	
	for (var i = 0; i < arreglo1.length; i++){
	    anidacion.push([arreglo1[i], arreglo2[i], arreglo3[i]]);
	}
	
	console.log("El resultado es %O", anidacion); 

3 - Crea un Array con 100 numeros enteros al azar. Después crea un array para almacenar los números pares y otro array para los impares.

  • Opcional: Ordena los números pares e impares en sus respectivos arrays
	var arrayPares = [], arrayImpares = [];
	
	for (var i = 0; i<100; i++){
		var random = Math.floor((Math.random() * 6) + 1)
		if(random % 2 !== 0){
			arrayImpares.push(random);
		} else {
			arrayPares.push(random);
		}
	}
	
	// Opcional
	arrayPares = arrayPares.sort();
	arrayImpares = arrayImpares.sort();

4 - Vamos a gestionar la lista de asistentes de un evento.

  • Características:

    • Cada asistente recibirá el identificador de su posición en el Array.
    • El identificador no puede cambiar una vez reservado el asiento.
    • Los asistentes pueden darse de baja, y el asiento que ocupaban queda libre.
    • Los nuevos asistentes seran asigandos primero a asientos desocupados.
  • Opcional:

    • Verifica antes de asignar un asistente que no se registro previamente.
	var lista = [];
	
	function asignar(nombre) {
	    var registrado = false;
	    var vacante = false;
	
	    for (var i = 0; i < lista.length; i++) {
	        if (lista[i] === undefined) {
	            vacante = i;
	        }
	        if (lista[i] === nombre) {
	            registrado = i;
	        }
	    }
	
	    if (registrado || registrado === 0) {
	        console.warn("Ya estabas registrado!");
	        console.info("Eres el asistente número", registrado);
	    } else {
	        if (vacante || vacante === 0) {
	            lista[vacante] = nombre;
	            console.info("Eres el asistente número", vacante);
	            console.info("Felicidades! has ocupado un asiento que estaba vacio.");
	        } else {
	            lista.push(nombre);
	            console.info("Eres el asistente número", lista.length - 1);
	            console.info("No quedan asientos vacios antes que el tuyo.");
	        }
	    }
	
	}
	
	function quitar(nombre) {
	    var registrado = false;
	
	    for (var i = 0; i < lista.length; i++) {
	        if (lista[i] === nombre) {
	            registrado = i;
	        }
	    }
	
	    if (registrado || registrado === 0) {
	        lista[registrado] = undefined;
	        console.info("El asistente " + nombre + " ha sido eliminado.");
	        console.info("El asiento " + registrado + " esta vacio.");
	    } else {
	        console.warn("El asistente " + nombre + "... no existe!");
	    }
	}
	
	// Test:
	asignar("Fran");
	/*
	Eres el asistente número 0
	No quedan asientos vacios antes que el tuyo.
	*/
	asignar("Yo mismo");
	/*
	Eres el asistente número 1
	No quedan asientos vacios antes que el tuyo.
	*/
	quitar("fran"); // El asistente fran... no existe!
	quitar("Fran");
	/*
	El asistente Fran ha sido eliminado.
	El asiento 0 esta vacio.
	*/
	asignar("Carlos"); // Eres el asistente número 0
	asignar("Carlos");
	/*
	Ya estabas registrado!
	Eres el asistente número 0
	*/

Arreglos avanzados

var arreglo1 = ["plátano", "fresa", "lima", "manzana"];
var arreglo2 = ["entrante", "primero", "segundo", "postre"];

var juntandoArreglos = [arreglo1, arreglo2];

function testArreglos () {
    console.log(juntandoArreglos[0][0]);
    console.log(juntandoArreglos[1][3]);
};