2
respostas

Eliminando caracteres em um array

Olá, boa tarde. Estou fazendo aqui um exercício mas me deparei com uma questão e não sei bem como procurar a resposta. Seria o oposto de join. Tenho o seguinte array mas precisaria remover alguns caracteres específicos.

O array é o seguinte:

var extractPassword = ['a', '-', '~', '1', 'a', '/'];

Preciso remover alguns caracteres para que a resposta seja: 'a1a'

Usei join para transformar tudo em uma string mas estou quebrando a cabeça aqui para remover os outros caracteres.

console.log(extractPassword.join('')); imprime: a-~1a/

Usar pop() seria uma opção mas não seria a mais bonita para o código.

2 respostas

Olá Igor, tudo bem com você?

Existem várias maneiras de resolver essa questão, como você falou de uma opção bonita, vou te dar a que eu considero mais elegante, tentando explicar parte por parte, ok?

Vou começar definindo um filtro de carácteres que não queremos em nosso array:

var filtro = [ '-', '~', '/'];

Agora irei utilizar um método de arrays chamado filter onde pegamos cada elemento do array e fazemos alguma operação ( tipicamente de comparação)

var filtro = [ '-', '~', '/'];
var extractPassword = ['a', '-', '~', '1', 'a', '/'];

var arrayFiltrado = extractPassword.filter( elemento => !filtro.includes(elemento));

Então o que estamos fazendo é o seguinte:

  • Irei passar por todos elementos do array extractPassword
  • Estou verificando se o elemento atual está contido no filtro com o método includes
  • Como eu quero apenas quem não esta eu utilizei o ! para negar o resultado anterior

Vou simular a execução agora:

  • Temos o primeiro elemento "a" que não está presente no filtro, então a resposta seria "false" mas como estamos negando com o ! vira true
  • Após isso temos o elemento "-" que está presente no filtro, então a resposta seria "true" mas como estamos negando vira false

Isso irá se repetir para todos os elementos e me retornar apenas os elementos que deram true :)

Dessa forma no final termos o array: arrayFiltrado = [ 'a', 'l', 'a']

Compreendeu? Abraços e Bons Estudos!

Fala ai Igor, tudo bem? Conseguiu resolver seu problema? Acho que a resposta do Geovani foi bem completa.

Caso a dúvida tenha sido resolvida não esqueça de marcar o tópico como solucionado e a resposta dele como solução.

Assim a gente consegue ajudar outros alunos com problemas iguais ou parecidos.

Fico no aguardo.