Codeur Senior

CHALLENGE JavaScript #66 (Débutant)

Chaque Lundi, je vous propose le "5 min JavaScript Challenge"...

J'avais l'habitude de faire l'exercice avec les développeurs qui me suivent par email...
Mais maintenant je vais proposer l'exercice à vous aussi, sur YouTube.

PERSONNE ne sera épargné... 😏

La seule règle ?

Vous avez 5 minutes MAX pour en venir à bout... sinon il va falloir revoir les fondamentaux.

Où réaliser le challenge ?

Dans la console de votre navigateur, tout simplement !

METTEZ VOTRE MEILLEURE RÉPONSE DANS LES COMMENTAIRES 👇

2 years ago | [YT] | 27



@bastienv6233

merci pour tes petits challenge qui m'ont fait me remettre en question sur ma connaissance des fondamentaux! du coup en 4 challenges j'ai amélioré mon code de fou. Aujourd'hui, j'ai plus cette crainte de partir sur du reduce compact :D : const countVowels = (text)=>{ return text.split('').reduce((acc,curr)=>'aeiouy'.includes(curr)? acc+1:acc,0); }

2 years ago | 2

@pxly69

Mon reflexe est d'utiliser une regex pour ce cas: return text.match(/[aeiouy]/gi).length Sans regex, j'aurais fait de cette manière: const vowels=["a", "e", "i", "o", "u", "y"]; return text.toLowerCase() .split("") .filter(e => vowels.includes(e)) .length;

2 years ago | 2

@cabrelelvis

Moi j'aurais spliter le texte ensuite j'aurai utilisé la fonction reduce en augmentant l'accumulateur si l'élément est inclus dans un tableau de voyelles.

2 years ago | 0

@paulpiazza4909

Je ne sais si c'est bien ce que je fais. Ma fonction fait une ligne et utilise les regex en js. La fonction match retourne le string qui correspond à la regex. i veut dire que le match ne prend pas en compte la casse. g permet de dire que je ne veut pas retrouver la 1ere occurrence mais je traite le mot en globale. ``` function countVowels(text) { return text .match(/[aeiouy]/ig) .length; } ```

2 years ago | 0

@JMNinja-od9iz

Je propose ici une solution moderne et peu verbeuse qui prend en compte également les caractères accentués : function countVowels(text) { return text.normalize('NFD').replaceAll(/(\p{Diacritic}|[^aeiouy])/gui, '').length; } countVowels("Salut"); // 2 countVowels("HellO World"); // 3 countVowels("HÉ, tu t'en vas déjà ?"); // 6 Explications: - text.normalize("NFD") -> renvoie la forme canonique décomposée de la chaîne (en gros, sépare les caractères de leur signe diacritique) - à partir de là, la regex /(\p{Diacritic}|[^aeiouy])/gui va cibler tous les signes diacritiques ainsi que les caractères n'étant pas des voyelles, et les remplacer par du vide grâce à .replaceAll() (la casse n'est pas prise en compte grâce au flag "i") - enfin, il n'y a plus qu'à compter avec .length ce qui reste -> normalement toutes les voyelles 😉

2 years ago (edited) | 3

@Laserbangbang

Alors pour moi ca donne ça. J ai essayé d être le plus concis possible. En tous cas ça fontionne. const text = "hello, world"; const voyelles = /[aeiou]/g; let found = (p, v) => p.match(v); console.log((found(text, voyelles).length));

2 years ago | 1

@BastienFacquet

Je suis en retard, mais je vais me rattraper :) function countVowels(text){ return text.toLowerCase().split('').filter(e=>['a', 'e', 'i', 'o', 'u', 'y'].includes(e)).length; }

1 year ago | 1  

@ThreeBattle

const text = "Hello World"; function countVowels(text) { let tabVowels = ["a", "e", "i", "o", "u", "y"]; let tab = [...text.toLowerCase()]; const result = tab.filter((letter) => tabVowels.includes(letter)).length; console.log(result); } countVowels(text);

1 year ago | 0  

@galluladavid8631

salut , je reste avec match et la fonction reguliere . je rentre les voyelle , et je place mon regex en global insensitive function compterVoyelles(chaine) { const voyelles = chaine.match(/[aeiou]/gi); return voyelles ? voyelles.length : 0; } const chaine = "Hello word"; const nombreDeVoyelles = compterVoyelles(chaine); console.log("Le nombre de voyelles dans la chaîne est :", nombreDeVoyelles);

2 years ago (edited) | 0

@Cycle9898

const text = "Hello word"; function countVowels(text) { const letterArray = text.toLowerCase().split(''); const vowels = 'aeiouy'; let vowelsNumber = 0; letterArray.forEach((letter) => { if (vowels.includes(letter)) { vowelsNumber++; } }) return vowelsNumber; }

2 years ago | 0

@legiondu08

type validVowels = 'a' | 'e' | 'i' | 'o' | 'u'; const text: string = 'Hello World'; const countVowels = (text: string): number => { const vowels: validVowels[] = ['a', 'e', 'i', 'o', 'u']; return text.split('').filter((letter: string) => vowels.includes(letter as validVowels)).length; } console.log(countVowels(text)); // 3

2 years ago | 0  

@Kergari

const vowels = ['a', 'e', 'i', 'o', 'u', 'y']; return text.normalize("NFD").replace(/\p{Diacritic}/gu, "").toLowerCase().split('').reduce( (accumulator, currentValue) => { return accumulator + (vowels.includes(currentValue) === true ? 1 : 0); }, 0 );

2 years ago | 0

@pierremendes8722

function countVowels(text){ const word= text.split('').filter(letter => letter === 'y' ||letter === 'u' ||letter === 'o' ||letter === 'a' ||letter === 'e' ||letter === 'i'); return word.length};

2 years ago | 0