Obtenir des chiffres en double dans une chaîne

Quelqu'un peut-il m'aider pour obtenir le nombre de caractères répétés dans une chaîne donnée en javascript.

Par exemple,

"abccdef" -> 1 (Only "c" repeated) "Indivisibilities" -> 2 ("i" and "s" repeated) 

Je vous remercie

C'est un problème intéressant. Ce que nous pouvons faire, c'est transformer la chaîne en minuscules en utilisant String.toLowerCase , puis diviser en "" , donc nous obtenons un ensemble de caractères.

Nous allons ensuite le trier avec Array.sort . Une fois qu'il a été trié, nous allons l'associer à l'aide de Array.join . Nous pouvons alors utiliser le regex /(.)\1+/g qui signifie essentiellement correspondre une lettre et des lettres subséquentes s'il est identique.

Lorsque nous utilisons String.match avec le regex déclaré, nous obtiendrons un tableau, dont la longueur est la réponse. Aussi utilisé un try...catch pour renvoyer 0 dans le cas où le match retourne null et entraîne TypeError .

 function howManyRepeated(str){ try{ return str.toLowerCase().split("").sort().join("").match(/(.)\1+/g).length; } catch(e){ return 0; } // if TypeError } console.log(howManyRepeated("Indivisibilities")); // 2 

Vous pouvez utiliser comme ça

 function getFrequency(string) { var freq = {}; for (var i=0; i<string.length;i++) { var character = string.charAt(i); if (freq[character]) { freq[character]++; } else { freq[character] = 1; } } return freq; }; getFrequency('Indivisibilities');