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 sentencia 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);
Los Arrays tienen métodos integrados para analizar el contenido del array.
La mayoría de estos métodos toman como argumento una función que devuelve true o false.
A ese tipo de función se le llama predicate.
Estos métodos integrados están pensados para usarse en lugar de un bucle for o del método forEach integrado:
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 algunos otros métodos integrados útiles que están disponibles para analizar un array. Consulta MDN para ver una lista completa de los métodos de array.
includesEl método includes(value) determina si un array incluye un valor determinado.
Devuelve true cuando el valor está incluido y false en caso contrario.
const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false
everyEl método every(predicate) toma una función que es un predicado.
Comprueba si todos los elementos del array devuelven true al pasarlos al predicado.
En otras palabras: el método comprueba que todos sus elementos pasan la prueba que se pasó en la llamada a la función.
Devuelve true cuando todos los elementos pasan la prueba del predicado y false en caso contrario.
const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true
someEl 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
findEl 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 del 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
findIndexEl método 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
Elyse, futura maga, continúa su entrenamiento. Recibirá varias pilas de cartas con las que debe hacer sus trucos. Para que todo sea un poco más fácil, solo usa las cartas del 1 al 10.
En este ejercicio, usa métodos integrados para analizar el contenido de un array.
Elyse quiere saber la posición (el índice) de una carta en la pila.
const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3
Elyse quiere determinar si una carta está presente en la pila; en otras palabras, si la pila contiene un number específico.
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
Elyse quiere saber si cada carta es par; en otras palabras, si cada número de la pila es un number par.
isEachCardEven([2, 4, 6, 7]);
// => false
Elyse quiere saber si hay un número impar en la pila.
doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true
Elyse quiere saber el valor de la primera carta que sea impar.
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Elyse quiere saber la posición de la primera carta que sea par.
getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.