[Dúvida] Filtrar um array de strings de forma condicional no Javascript
Existe um padrão comum pra filtrar um array de strings de forma condicional?
Por exemplo, dado a lista e os filtros a seguir:
const alphabet = 'abcde123456!@#$%'.split('')
const filteredAlphabet = alphabet
.filter(removeLetters)
.filter(removeNumbers)
.filter(removeSpecial)
Existe um padrão pra poder ativar/desativar esses filtros de forma condicional, usando propriedades de uma função, por exemplo?
type Options: {
letters: boolean,
numbers: boolean,
special: boolean
}
function filterList(options: Options) {
const alphabet = 'abcde123456!@#$%'.split('')
const filteredAlphabet = alphabet
.filter(removeLetters) // Filtro deve ser aplicado apenas se `options.letters` for `false`
.filter(removeNumbers) // Filtro deve ser aplicado apenas se `options.numbers` for `false`
.filter(removeSpecial) // Filtro deve ser aplicado apenas se `options.special` for `false`
return filteredAlphabet.join('')
}
filterList({ letter: true, number: true, special: false }) // abcde123456
filterList({ letter: true, number: false, special: true }) // abcde!@#$%
filterList({ letter: false, number: true, special: true }) // 123456!@#$%
Não se atente à implementação das funções removeLetters
, removeNumbers
e removeSpecial
em si, minha dúvida é só se existe um padrão comum pra aplicar essas funções de forma condicional.