Duvida sobre programação em JS

Fala galera, beleza?

To com uma dúvida em JS durante meu estudo, a questao abaixo pede isso:
Você receberá um array inicial (o primeiro argumento na função do destruidor), seguido por um ou mais argumentos. Remova todos os elementos da matriz inicial que tenham o mesmo valor que esses argumentos.

E esse é o resultado:

function destroyer(arr) {
	function destroyer(arr, ...valsToRemove) {
  		return arr.filter(elem => !valsToRemove.includes(elem));
	}
	
	return arr;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

Peguei só de exemplo mas minha duvida é a seguinte:

O que necessariamente acontece nessa parte?

(elem => !valsToRemove.includes(elem)

Esse “elem” é uma variavel nova? O que necessariamente é isso? To bem confuso com isso.
Eu posso criar qualquer nome pra essa ‘‘elem’’?

Se possivel poderiam descrever exatamente o que ocorre nesta parte do codigo? Ou se existe algo que eu possa estudar especificamente sobre esse “=>”?

Isso é o que chamamos de Arrow Functions.

Arrows Functions são muito parecidas com as funções regulares, com algumas diferenças.

Exemplo de Arrow Function:

const soma = (n1, n2) => {
    return n1 + n2;
}

console.log(soma(1, 2));
// 3

Caso a função tenha apenas uma linha, você pode remover as chaves e o return.

const soma = (n1, n2) => n1 + n2;
console.log(soma(3, 4));
// 7

Aqui o método filter do array recebe uma função como primeiro argumento
Uma outra maneira de ver isso seria:

arr.filter(function(elem) {
    return !valsToRemove.includes(elem);
});
1 curtida

Obrigado pela resposta, vou ir atrás de entender como funciona as arrow functions!

1 curtida