Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no uso de filter

Olá pessoal, estou com uma dúvida na utilidade do underscore como parâmetro no filter, ex:

Estou implementando uma forma de remover os itens de um array, porém, qual a utilidade dele para funcionar o filtro?

removeItem(index) {
  this.setState({
    data: this.state.data.filter((_, i) => i !== index)
  });
}
2 respostas
solução!

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. :)

Muitíssimo obrigado @Eduardo!!!

Acreditava que o underscore seria para algo específico, mas é apenas para referência do item atual!

Mais uma vez, muito obrigado pelo apoio!