Além de declarações de função e expressões de função, o JavaScript também tem outra sintaxe bem concisa para definir uma função. Essas funções são chamadas de funções de seta.
Veja uma comparação entre uma declaração de função e uma função de seta.
function addUpTwoNumbers(num1, num2) {
return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
return num1 + num2;
};
Se o corpo da função tiver apenas uma instrução de retorno, como no exemplo acima, podemos omitir o {} e a palavra-chave return.
Se houver apenas um parâmetro, os parênteses () também podem ser omitidos.
const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;
As funções de seta são muito usadas para definir funções de callback curtas diretamente na chamada da função.
applyToSquare(number => number * number);
Os Arrays têm métodos internos para analisar o conteúdo do array.
A maioria desses métodos recebe como argumento uma função que retorna true ou false.
Uma função assim é chamada de predicate.
Esses métodos internos devem ser usados em vez de um laço for ou do método interno forEach:
Exemplo de análise usando um laço for:
const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] === 'two') {
return i;
}
}
// => 1
Exemplo de análise usando um método interno:
const numbers = [1, 'two', 3, 'four'];
numbers.indexOf('two');
// => 1
Veja abaixo alguns outros métodos internos úteis para analisar um array. Consulte a MDN para ver a lista completa de métodos de array.
includesO método includes(value) determina se um array contém determinado valor.
Ele retorna true quando o valor está presente e false caso contrário.
const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false
everyO método every(predicate) recebe uma função que é um predicado.
Ele verifica se todos os elementos do array retornam true quando passados ao predicado.
Em outras palavras: o método testa se todos os seus elementos passam no teste passado para a chamada da função.
Ele retorna true quando todos os elementos passam no teste do predicado e false caso contrário.
const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true
someO método some(predicate) é igual ao método every, mas retorna true se pelo menos um item do array passar no teste do predicado.
const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true
findO método find(predicate) retorna o valor do primeiro elemento do array que passa no teste do predicate.
Onde some() retorna true quando o teste passa, find() retorna o valor de fato presente no array.
O método retorna undefined quando nenhum dos elementos do array passa no teste do predicado.
const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1
findIndexO findIndex(predicate) é igual ao método find(), mas retorna o índice do elemento (o primeiro) que passa no teste do predicado, em vez do value.
O método retorna -1 quando nenhum dos elementos do array passa no teste do predicado.
const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1
Elyse, aspirante a maga, continua seu treinamento. Ela vai receber vários montes de cartas com os quais precisa realizar seus truques. Para facilitar um pouco as coisas, ela usa apenas as cartas de 1 a 10.
Neste exercício, use métodos nativos para analisar o conteúdo de um array.
Elyse quer saber a posição (índice) de uma carta no monte.
const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3
Elyse quer determinar se uma carta está presente no monte, ou seja, se o monte contém um number específico.
const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true
Elyse quer saber se cada carta é par, ou seja, se cada número no monte é um number par.
isEachCardEven([2, 4, 6, 7]);
// => false
Elyse quer saber se há um número ímpar no monte.
doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true
Elyse quer saber o valor da primeira carta que é ímpar.
getFirstOddCard([4, 2, 8, 7, 9]);
// => 7
Elyse quer saber a posição da primeira carta que é par.
getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
Crie sua conta no Exercism para aprender e dominar JavaScript com 37 conceitos159 exercícios e mentoria humana de verdade, tudo de graça.