En una cadena, como 'Zhaochucichuzuiduodezifu', queremos descubrir los personajes que más parecen. Este artículo explicará los métodos e ideas en detalle.
Primero introduzca dos métodos en dos objetos de cadena : indexOf () y métodos charat ()
El método indexOf () introduce el retorno de la primera aparición de un valor de cadena especificado en la cadena
El método charat () presenta el carácter de retorno en una posición especificada
Primero haga una pequeña prueba para encontrar dónde cada 'i' aparece en la cadena 'woainixiaoli'.
<script> var arr = 'woainixiaoli'; var index = -1; // Defina el índice variable para controlar el valor del índice // Cuando A no se puede encontrar, es decir, el valor de indexOf () es -1, los extremos de bucle do {index = arr.indexof ("i", index + 1); // Use el segundo índice de parámetros+1 para controlar cada búsqueda comienza desde la siguiente posición de índice del carácter A cuando se encuentra la última búsqueda si (index! = -1) {// el caracteres iconsole.log (index); // La posición de salida a}} while (index! = -1); </script>Después de ejecutar el código anterior, la consola sale
Vaya al tema y encuentre la mayoría de los caracteres de la cadena 'Zhaochucichuzuiduodezifu'
Método 1: use una matriz (hay una desventaja. Cuando hay más de un carácter que aparece, solo se puede encontrar uno)
<script> var str = "zhaochucichuzuiduodezifu"; var arr = []; // Define una nueva matriz // bucle a través de la cadena para (var i = 0, longitud = str.length; i <longitud; i ++) {var index = -1; var j = 0; // encontrar cada carácter do {str.indexof (str [i], índice+1); si (índice (var j = 0; // encontrar cada carácter hacer {index = str.indexof (str [i], índice+1); si (índice (vAR j = 0; // encontrar cada carácter do {index = str.indexof (str [i], índice+1); if (Índice) {j ++;}} while (index! = -1); arr [j] = str [i]; // Asigna los caracteres en la cadena STR a los datos con la matriz ARR indexada como j. Después de múltiples bucles, se producirán tareas repetidas. // La asignación posterior sobrescribirá la asignación anterior, pero no afectará nuestro hallazgo de la mayoría de los caracteres} console.log (arr); console.log ("La mayoría de los caracteres son" + arr [arr.length - 1]); console.log ("El número de tiempos" + (arr.length - 1)); </script>El resultado del código anterior que se ejecuta y luego emite la consola es el siguiente:
También se puede ver en la matriz de salida ARR que este método sobrescribirá caracteres con el mismo número de veces y solo puede mostrar uno. Si aparecen 2 caracteres con el mismo número máximo de veces, este método solo puede obtener uno. Según esto, consulte el siguiente método para resolverlo con objetos.
Método 2: Use objetos (recomendado)
<script> var str = "zhaochucichuzuiduodezifu"; var o = {}; for (var i = 0, longitud = str.length; i <longitud; i ++) {// var char = str [i]; var char = str.charat (i); if (o [char]) {// char es un atributo de objeto o, o [char] es el valor de atributo, o el número de atribuyo. o [char] ++; // agregar 1} else {o [char] = 1; // Si la primera ocurrencia, el número de ocurrencias se marca como 1}} console.log (o); // La salida es un objeto completo, registrando cada carácter y su número de ocurrencia // viajar a través del objeto, encontrar los caracteres con la mayor cantidad de ocurrencias y el número de ocurrencias var max = 0; var maxchar = null; for (key var en o) {if (max <o [key]) {max = o [key]; // El maxchar con el mayor número de ocurrencias maxchar = key; // El carácter correspondiente es la clave actual}} console.log ("La mayoría de las ocurrencias son" + maxchar); console.log ("El número de ocurrencias es" + max); </script>El resultado del código anterior que se ejecuta y luego emite la consola es el siguiente:
Este método resuelve el problema del método uno, y podemos registrar claramente el número de ocurrencias de cada personaje. Cuando hay dos caracteres con el mismo número de veces, se pueden ver claramente en el objeto.
Sin embargo, todavía hay deficiencias. No puede generar directamente los caracteres con el mayor número de veces al mismo tiempo. Esto requiere condiciones de juicio adicionales. El código perfecto es el siguiente o (∩_∩) o
<script> var str = "Nininihaoa"; var o = {}; for (var i = 0, longitud = str.length; i <longitud; i ++) {var char = str.charat (i); if (o [char]) {o [char] ++; // agregar 1} else {o [char] = 1; // Si se registra la primera ocurrencia, el número de veces se registra como 1}} console.log (o); // La salida es un objeto completo, registrando cada carácter y su número de ocurrencia // viajar a través del objeto y encontrar el carácter con la mayoría de los ocurrencias var max = 0; para (clave var en o) {if (max <o [key]) {max = o [key]; // el que tiene el mayor número de máximo siempre almacenado}} para (clave var en o) {if (o [key] == max) {//console.log(key);console.log("el la mayoría de los caracteres son " + key); console.log (" El número de ocurrencias es " + max);}} </script>Los resultados son los siguientes:
Lo anterior es el personaje que el editor le presenta que los personajes más comunes aparecen en la cadena JS. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!