Oi Felipe!
Nas especificações da função filter
que pode ser vista aqui, podemos ver que o primeiro argumento é uma função recebe outros 3 parâmetros.
function(currentValue, index, arr)
O filter
vai passar por todos os elementos do array e retornará uma nova lista seguindo o critério dessa função passada como argumento.
Durante a iteração dos itens, o currentValue
se refere ao valor do elemento atual, o index
ao índice do valor anterior e arr
é uma referência ao array inteiro.
A sua arrow function é equivalente ao seguinte código
function(_, i) {
i !== index
}
Sendo assim, durante a iteração o valor do elemento (currentValue
) será atribuído à _
, que recebe este nome porque ela não importante, visto que ela não é utilizada na função, mas ela precisa estar lá para que o i
receba corretamente o valor do índice.
Faça o seguinte teste com a sua função para verificar que os 3 parâmetros estão realmente ali.
arr.filter((_,i, arr) => {
i !== index;
console.log(_);
console.log(arr)
}
Espero ter ajudado. Parabéns pela curiosidade! Se questionar como que as coisas estão funcionando e o porquê disso é muito importante para o aprendizado. Qualquer outra dúvida pode postar aqui. :)