const miLista = [1, 9, 87, 3, 10, 4, 20, 2, 45];
console.log(miLista);
// Nueva lista con números de 1 dígito
const listaCambiada = miLista.map(function(elemento) {
/* Pasamos el número a string para poder usar slice. Cortamos el segundo dígito. Después lo volvemos a transformar en núm. */
return parseInt(elemento.toString().slice(0, 1));
})
console.log(listaCambiada);
Reto 5:
/**
* Elimina los acentos de una cadena
*
* @param {string} Texto del que queremos quitar las tildes
* @returns {string} Texto sin acentos
*/
function quitarAcentos(string) {
// NFD: la forma descompuesta de Unicode. Por defecto sería NFC
return string.normalize("NFD").replace(/[\u0300-\u036f]/g, "");
}
console.log(quitarAcentos("Tú quitarás estos acentos rápidamente."));
Reto 6:
/**
* Crea un array con los números de Fibonacci
*
* @param {number} cantidadElementos Cuántos números queremos en nuestro array; su largo
* @returns {array} arrayFibonacci Array con la secuencia de Fibonacci
*/
function fibonacci(cantidadElementos) {
/* La secuencia de Fibonacci empieza por 0, 1... Y los siguientes núms. son el resultado de la suma de sus dos anteriores */
// Creamos un array con x número de elementos. Este array empieza por 0 y va incrementando de 1 en 1
const array = Array.from({length: cantidadElementos}, function(valor, indice) {
return indice;
})
// Cambiamos los números del array para que sean los de Fibonacci
const arrayFibonacci = array.map(function(valor, indice, array) {
// El primero lo mantiene
if (indice == 0) {
return 0;
// No cambia tampoco el segundo elemento, 1
} else if (indice == 1) {
return 1;
// A partir del tercer elemento, va recorriendo así:
} else {
// Guardamos tanto la posición actual como su posición anterior y la previa a esta última
const posicionActual = indice;
const posicionAnterior = posicionActual - 1;
const posicionPreviaAnterior = posicionAnterior - 1;
// Cada número es el resultado de la suma de los dos núms. que le preceden
return array[posicionActual] = array[posicionAnterior] + array[posicionPreviaAnterior];
}
})
return arrayFibonacci;
}
console.log(fibonacci(10));
Reto 7:
/**
* Crea un número al azar entre el 1 y el 30, ambos incluidos
*
* @returns {number} Número entero random
*/
function generarNumero() {
return Math.floor(Math.random() * 30) + 1;
}
/**
* Genera un array de 10 elementos con números aleatorios
*
* @returns {array} arrayAComprobar Dicho array
*/
function crearArray() {
const arrayAComprobar = Array(10).fill().map(() => {
return generarNumero();
})
return arrayAComprobar;
}
/**
* Comprueba si hay números repetidos en el array y los elimina, reemplazándolos por otros
*
* @returns {array} arraySinRepetidos El array de 10 elementos sin repetir
*/
function rellenarSet() {
// Pasamos el array a comprobar a un set para quitar los repetidos
const arraySinRepetidos = new Set(crearArray());
// Añadimos nuevo número al set
arraySinRepetidos.add(generarNumero());
// Si ya hay 10 elementos que NO son iguales, pasa el set a array y lo devuelve ordenado de menor a mayor
if (arraySinRepetidos.size == 10) {
return Array.from(arraySinRepetidos).sort(function(num1, num2) {
return num1 - num2;
});
}
// Recursividad para seguir añadiendo números hasta que se cumpla la condición anterior
return rellenarSet();
}
console.log(rellenarSet());
Reto 8:
const sieteGrupos = ["Queen", "Cream", "The Doors", "The Who", "Blondie", "The Police", "Kiss"];
/**
* Cambia un elemento a otra posición dentro del array, moviendo el resto de elementos
*
* @param {number} posicionInicial El elemento que queremos "mover"
* @param {number} posicionFinal El índice donde queremos que esté
* @param {array} array El array original que vamos a modificar
* @returns {array} El array modificado
*/
function moverElemento(posicionInicial, posicionFinal, array) {
/* Realmente estamos duplicando el elemento y poniéndolo en la posición final, haciendo que todos se muevan. 0 porque en la posición final no queremos que elimine ningún elemento */
array.splice(posicionFinal, 0, array[posicionInicial]);
// Como el elemento original se ha movido una posición:
const posicionActual = posicionInicial + 1;
// En esa posición queremos que nos quite 1 elemento, el duplicado
array.splice(posicionActual, 1);
return array;
}
// Movemos The Doors a la primera posición del array
console.log(moverElemento(2, 0, sieteGrupos));
Reto 2:
Reto 5:
Reto 6:
Reto 7:
Reto 8: