Dans une chaîne, comme «Zhaochucichuzuiduodezifu», nous voulons découvrir les caractères qui apparaissent le plus. Cet article expliquera les méthodes et les idées en détail.
Introduire d'abord deux méthodes dans deux objets de chaîne : indexof () et charat () méthodes
La méthode indexof () introduit le retour de la première occurrence d'une valeur de chaîne spécifiée dans la chaîne
La méthode charat () introduit le caractère de retour à une position spécifiée
Faites d'abord un petit test pour trouver où chaque «je» apparaît dans la chaîne «woainixiaoli».
<script> var arr = 'woainixiaoli'; var index = -1; // Définissez l'index de la variable pour contrôler la valeur d'index // Lorsque A ne peut pas être trouvé, c'est-à-dire que la valeur de l'index () est -1, les extrémités de la boucle font {index = arr.Indexof ("i", index + 1); // Utilisez le deuxième paramètre Index + 1 pour contrôler chaque recherche à partir de la position d'index suivante du caractère A lorsque la dernière recherche est trouvée si (index! = -1) {// Le caractère iconsole.log (index); // La position de sortie a}} while (index! = -1); </script>Une fois le code ci-dessus exécuté, la console sortira
Allez sur le sujet et trouvez le plus de caractères dans la chaîne «Zhaochucichuzuiduodezifu»
Méthode 1: Utilisez un tableau (il y a un inconvénient. Lorsqu'il y a plus d'un caractère qui apparaît, un seul peut être trouvé)
<cript> var str = "zhaochucichuzuiduodezifu"; var arr = []; // définir un nouveau tableau // boucle via la chaîne pour (var i = 0, longueur = str.length; i <longueur; i ++) {var index = -1; var j = 0; // trouver chaque personnage do {index = str.indexof (str [i], index + 1); if (index) {j ++;}} while (index! = -1); arr [j] = str [i]; // Attribuez les caractères dans la chaîne STR aux données avec le tableau Arr indexé comme j. Après plusieurs boucles, des affectations répétées se produiront. // l'affectation suivante écrasera l'affectation précédente, mais elle n'affectera pas notre recherche celle avec le plus de caractères} console.log (arr); console.log ("Le nombre de caractères est" + arr.length - 1]); console.log ("le nombre de fois est" + (arr.length - 1)); </ script>Le résultat de l'exécution du code ci-dessus puis de la sortie de la console est le suivant:
Il peut également être vu à partir du tableau de sortie ARR que cette méthode écrasera les caractères avec le même nombre de fois et ne peut en afficher qu'un. Si 2 caractères apparaissent avec le même nombre maximum de fois, cette méthode ne peut en obtenir qu'un. Sur la base de cela, reportez-vous à la méthode suivante pour le résoudre avec des objets.
Méthode 2: Utilisez des objets (recommandés)
<script> var str = "ZhaochucichuzuiDuodezifu"; var o = {}; for (var i = 0, longueur = str.length; i <length; i ++) {// var char = str [i]; var char = str.charat (i); if (o [char]) {// char] le numéro de l'objet o, o [char] est la valeur d'attribut, o [char] le numéro de l'objet O, O [char] est la valeur d'attribut, o [char] le numéro de l'objet O, O [char] est la valeur d'attribut, o [char] o [char] ++; // ajouter 1} else {o [char] = 1; // Si la première occurrence, le nombre d'occurrences est marqué comme 1}} console.log (o); // La sortie est un objet complet, enregistrant chaque caractère et son numéro d'occurrence // voyageant à travers l'objet, en trouvant les caractères avec le plus d'occurrences et le nombre d'occurrences var max = 0; var maxChar = null; pour (clé var dans o) {if (max <o [key]) {max = o [key]; // le maxchar avec le plus grand nombre d'occurrences maxChar = clé; // Le caractère correspondant est la clé actuelle}} console.log ("Les plus occurrences sont" + maxchar); console.log ("le nombre d'occurrences est" + max); </cript>Le résultat de l'exécution du code ci-dessus puis de la sortie de la console est le suivant:
Cette méthode résout le problème de la méthode un, et nous pouvons clairement enregistrer le nombre d'occurrences de chaque caractère. Lorsqu'il y a deux caractères avec le même nombre de fois, ils peuvent être clairement vus dans l'objet.
Cependant, il y a encore des lacunes. Vous ne pouvez pas sortir directement les caractères avec le plus grand nombre de fois en même temps. Cela nécessite des conditions de jugement supplémentaires. Le code parfait est le suivant o (∩_∩) o
<Script> var str = "nininihaoa"; var o = {}; for (var i = 0, longueur = str.length; i <longueur; i ++) {var char = str.charat (i); if (o [char]) {o [char] ++; // ajouter 1} else {o [char] = 1; // Si la première occurrence est enregistrée, le nombre de fois est enregistré comme 1}} console.log (o); // La sortie est un objet complet, enregistrant chaque caractère et son numéro d'occurrence // voyageant à travers l'objet et trouvant le caractère avec le plus d'occurrences var max = 0; pour (clé var dans o) {if (max <o [key]) {max = o [key]; // celui avec le plus grand nombre de max toujours stockés}} pour (clé var dans o) {if (o [key] == max) {//console.log(key);Console.log(" les caractères sont "+ key); console.log (" le nombre d'occurrences est "+ max);}} </cript>Les résultats sont les suivants:
Ce qui précède est le personnage que l'éditeur vous présente que les caractères les plus courants apparaissent dans la chaîne JS. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!