AJA une syntaxe intéressante pour filtrer facilement un tableau en fonction de la “truthiness” de ses valeurs.
Imaginons le tableau suivant :
1 | const myArray = ["mon", NaN, "beau", null, "tableau", ""]; |
Pour filtrer ce tableau, j’aurais utilisé le code suivant :
1 | const cleanArray = myArray.filter((i) => i); |
Car filter évalue la truthiness de la lambda pour chaque élément, cela fonctionne.
Or sur stackoverflow, j’ai lu la réponse suivante :
1 | const cleanArray = myArray.filter(Boolean); |
Comment ça ? 🤔 J’ai tout d’abord cru qu’il s’agissait d’une syntaxe bizarre que je ne connaissais pas.
Mais en fait, en JS, Boolean
n’est pas seulement un type, c’est également un constructeur, ou encore une fonction. Et il se trouve que l’on peut construire un booléen en lui fournissant n’importe quoi en entrée, ce qui donnera à ce booléen la truthiness de la valeur fournie.
En somme, les trois syntaxes suivantes sont équivalentes :
1 | const cleanArray1 = myArray.filter((i) => i); |
Après… Entre nous, à part pour briller en société, la syntaxe ne me parait pas beaucoup plus lisible, mais c’était marrant de découvrir cette manière de procéder.