Rutas
/
JavaScript
JavaScript
/
Ejercicios
/
Los encantamientos analíticos de Elyse
Los encantamientos analíticos de Elyse

Los encantamientos analíticos de Elyse

Ejercicio de aprendizaje

Introducción

Funciones flecha

Además de las declaraciones de funciones y las expresiones de funciones, JavaScript también tiene otra sintaxis muy concisa para definir una función. Estas funciones se llaman funciones flecha.

Aquí tienes una comparación entre una declaración de función y una función flecha.

function addUpTwoNumbers(num1, num2) {
  return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
  return num1 + num2;
};

Si el cuerpo de la función contiene solo una instrucción return, como en el ejemplo anterior, se pueden omitir las {} y la palabra clave return. Si solo hay un parámetro, también se pueden omitir los paréntesis ().

const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;

Las funciones flecha se usan a menudo para definir funciones de callback cortas directamente en la llamada a la función.

applyToSquare(number => number * number);

Análisis de arrays

Arrays tienen métodos integrados para analizar el contenido del array. La mayoría de estos métodos toman una función que devuelve true o false como argumento. Esa función se llama predicate.

Los métodos integrados están pensados para usarse en lugar de un bucle for o del método integrado forEach:

Ejemplo de análisis usando un bucle for:

const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
  if (numbers[i] === 'two') {
    return i;
  }
}
// => 1

Ejemplo de análisis usando un método integrado:

const numbers = [1, 'two', 3, 'four'];
numbers.indexOf('two');
// => 1

A continuación se muestran otros métodos integrados útiles disponibles para analizar un array. Consulta MDN para obtener una lista completa de los métodos de array.

includes

El método includes(value) determina si un array incluye un valor determinado. Devuelve true cuando el valor está incluido, false en caso contrario.

const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false

every

El método every(predicate) toma una función que es un predicado. Comprueba si todos los elementos del array devuelven true cuando se pasan al predicado. En otras palabras: el método comprueba que todos sus elementos pasan la prueba que se le pasa a la función. Devuelve true cuando cada elemento pasa la prueba del predicado, false en caso contrario.

const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true

some

El método some(predicate) es igual que el método every, pero devuelve true si al menos un elemento del array pasa la prueba del predicado.

const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true

find

El método find(predicate) devuelve el valor del primer elemento del array que pasa la prueba del predicate. Mientras que some() devuelve true cuando pasa, find() devuelve el valor real en el array. El método devuelve undefined cuando ninguno de los elementos del array pasa la prueba del predicado.

const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1

findIndex

El findIndex(predicate) es igual que el método find(), pero devuelve el (primer) índice del elemento que pasa la prueba del predicado en lugar del value. El método devuelve -1 cuando ninguno de los elementos del array pasa la prueba del predicado.

const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1

Instrucciones

Elyse, futura maga, continúa su entrenamiento. Se le darán varias pilas de cartas con las que tendrá que hacer sus trucos. Para que las cosas sean un poco más fáciles, solo utiliza las cartas del 1 al 10.

En este ejercicio, utiliza métodos integrados para analizar el contenido de un array.

1. Encuentra la posición de una carta

Elyse quiere saber la posición (el índice) de una carta en la pila.

const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3

2. Determina si una carta está presente

Elyse quiere determinar si una carta está presente en la pila; en otras palabras, si la pila contiene un number concreto.

const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true

3. Determina si cada carta es par

Elyse quiere saber si todas las cartas son pares; en otras palabras, si cada número de la pila es un number par.

isEachCardEven([2, 4, 6, 7]);
// => false

4. Comprueba si la pila contiene una carta de valor impar

Elyse quiere saber si hay un número impar en la pila.

doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true

5. Obtén la primera carta impar de la pila

Elyse quiere saber el valor de la primera carta que es impar.

getFirstOddCard([4, 2, 8, 7, 9]);
// => 7

6. Determina la posición de la primera carta que es par

Elyse quiere saber la posición de la primera carta que es par.

getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
JavaScript Exercism

¿Listo para empezar Los encantamientos analíticos de Elyse?

Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.