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!