I have this Js function with hard coded filter parameters. It filter all the buckets sub objects when key start with a string from a given list. For now i havent found a way to put this list as an array...
function filter(buckets) {
return buckets.filter(({key}) => {
const _key = key.toLowerCase();
return (
!_key.startsWith("anciennes") && !_key.startsWith("anciens") && !_key.startsWith("arrondissements") && !_key.startsWith("autorites") && !_key.startsWith("cantons") && !_key.startsWith("capitales") &&
!_key.startsWith("chaines") && !_key.startsWith("chefs lieux") && !_key.startsWith("circonscriptions") && !_key.startsWith("communautes d") && !_key.startsWith("comtes d") && !_key.startsWith("constellations") && !_key.startsWith("continents") &&
!_key.startsWith("cours d") && !_key.startsWith("départements") && !_key.startsWith("districts d") && !_key.startsWith("établissements") && !_key.startsWith("états") && !_key.startsWith("ethnonymes") && !_key.startsWith("étoiles") &&
!_key.startsWith("europe") && !_key.startsWith("îles") && !_key.startsWith("lander-allemands") && !_key.startsWith("lieux-mythologiques") && !_key.startsWith("Localités d") && !_key.startsWith("mers") &&
!_key.startsWith("montagnes") && !_key.startsWith("municipalité") && !_key.startsWith("fromage") && !_key.startsWith("localités") && !_key.startsWith("noms de") && !_key.startsWith("numéros de") &&
!_key.startsWith("odonymes") && !_key.startsWith("organisations internationales") && !_key.startsWith("pays ") && !_key.startsWith("péninsules") && !_key.startsWith("préfectures") && !_key.startsWith("provinces") && !_key.startsWith("quartiers") &&
!_key.startsWith("régions") && !_key.startsWith("réserves indiennes") && !_key.startsWith("sous ") && !_key.startsWith("territoires") && !_key.startsWith("toponymes ") && !_key.startsWith("unions supranationales") && !_key.startsWith("villes du quebec") && !_key.startsWith("voivodies de pologne")
)
})
}
const buckets = [
{"key": "Aliments", "doc_count": 10}, {"key": "Adjectifs", "doc_count": 7}, {"key": "Vêtements", "doc_count": 6}, {"key": "Armures", "doc_count": 5}, {"key": "Anciennes divisions géographiques", "doc_count": 4}, {"key": "Super-règnes", "doc_count": 4},
{"key": "Eucaryotes", "doc_count": 3}, {"key": "Pays", "doc_count": 3}, {"key": "Antonomases", "doc_count": 2}, {"key": "Continents", "doc_count": 2}, {"key": "Europe", "doc_count": 2}, {"key": "France", "doc_count": 2},
{"key": "Localités", "doc_count": 2}, {"key": "Localités de France", "doc_count": 2}, {"key": "Plantes", "doc_count": 2}, {"key": "États", "doc_count": 2}, {"key": "Acaryotes", "doc_count": 1},
{"key": "Animaux", "doc_count": 1}, {"key": "Armes", "doc_count": 1}, {"key": "Aromates", "doc_count": 1}, {"key": "Chordés", "doc_count": 1}, {"key": "Couleurs", "doc_count": 1}, {"key": "Créatures mythologiques", "doc_count": 1},
{"key": "Fromages", "doc_count": 1}, {"key": "Fromages forts", "doc_count": 1}, {"key": "Fromages à pâte filée", "doc_count": 1}, {"key": "Fruits", "doc_count": 1}, {"key": "Langages informatiques", "doc_count": 1},
{"key": "Localités du département de la Corrèze", "doc_count": 1}, {"key": "Localités du département de la Dordogne", "doc_count": 1}, {"key": "Machines", "doc_count": 1}, {"key": "Oiseaux", "doc_count": 1}, {"key": "Tétrapodes", "doc_count": 1},
{"key": "Vertébrés", "doc_count": 1}, {"key": "Vie domestique", "doc_count": 1}, {"key": "Virus", "doc_count": 1}, {"key": "Volcans", "doc_count": 1}
];
jsbin here :
https://jsbin.com/xicejozafe/edit?js,console
how to transform this function to generate the !_key.startsWith( ... ) && from and array of string insted of this crazy hard coded long &&
const listOfTermToIgnore = ["anciennes", "anciens", "arrondissements", "autorites", "cantons", "capitales",
"chaines", "chefs lieux", "circonscriptions", "communautes d", "comtes d", "constellations", "continents",
"cours d", "départements", "districts d", "établissements", "états", "ethnonymes", "étoiles",
"europe", "îles", "lander-allemands", "lieux-mythologiques", "Localités d", "mers",
"montagnes", "municipalité", "fromage", "localités", "noms de", "numéros de",
"odonymes", "organisations internationales", "pays ", "péninsules", "préfectures", "provinces", "quartiers",
"régions", "réserves indiennes", "sous ", "territoires", "toponymes ", "unions supranationales", "villes du quebec", "voivodies de pologne" ]
thanks for reading
You can use the inverse of array.some. It will return false if _key starts with any item from the array, or true otherwise.
function filter(buckets) {
return buckets.filter(({key}) => {
const _key = key.toLowerCase();
return !listOfTermToIgnore.some(item => _key.startsWith(item))
})
}
Use array.every() to check all the elements of the array.
function filter(buckets) {
return buckets.filter(({key}) => {
const _key = key.toLowerCase();
return listOfTtermToIgnore.every(term => !_key.startsWith(term))
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With