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);
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.
includesEl 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
everyEl 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
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 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
findIndexEl 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. 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.
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 concreto.
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
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
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 es impar.
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Elyse quiere saber la posición de la primera carta que es 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.