Em uma string, como 'Zhaochucichuzuiduodezifu', queremos descobrir os personagens que mais aparecem. Este artigo explicará os métodos e idéias em detalhes.
Primeiro, introduza dois métodos em dois objetos de string : indexof () e charat () métodos
O método indexOf () apresenta o retorno da primeira ocorrência de um valor de string especificado na string
O método Charat () apresenta o caractere de retorno em uma posição especificada
Primeiro faça um pequeno teste para descobrir onde cada 'i' aparece na string 'Woainixiaoli'.
<Cript> var arr = 'woainixiaoli'; var index = -1; // Defina o índice variável para controlar o valor do índice // Quando A não pode ser encontrado, ou seja, o valor de indexOf () é -1, o loop termina como {index = arr.indexof ("i", índice + 1); // Use o segundo índice de parâmetros+1 para controlar cada pesquisa começa na próxima posição do índice do caractere A quando a última pesquisa é encontrada se (index! = -1) {// o caractere iconsole.log (index); // a posição da saída a}} while (index! = -1); </sCript>Depois que o código acima é executado, as saídas do console
Vá para o tópico e encontre o máximo de personagens da string 'Zhaochucichuzuiduodezifu'
Método 1: Use uma matriz (há uma desvantagem. Quando há mais de um personagem que aparece, apenas um pode ser encontrado)
<SCRIPT> var str = "zhaochucichuzuiduodezifu"; var arr = []; // define uma nova matriz // loop através da string para (var i = 0, comprimento = str.Length; i <comprimento; i ++) {var index = -1; var j = 0; // Find cada caractere do {index = str.In) {var {j ++;}} while (index! = -1); arr [j] = str [i]; // Atribua os caracteres na string str aos dados com a matriz ARR indexada como j. Após vários loops, ocorrerão repetidas tarefas. // A tarefa subsequente substituirá a tarefa anterior, mas não afetará nossa descoberta daquele com a maioria dos caracteres} console.log (arr); console.log ("o maior número de caracteres é" + arr [arr.length - 1]); console.log ("O número de vezes é" + (ar.Length - 1));O resultado do código acima sendo executado e, em seguida, produzir o console é o seguinte:
Também pode ser visto na matriz de saída ARR, que esse método substituirá os caracteres com o mesmo número de vezes e só pode exibir um. Se 2 caracteres aparecerem com o mesmo número máximo de vezes, esse método poderá obter apenas um. Com base nisso, consulte o próximo método para resolvê -lo com objetos.
Método 2: Use objetos (recomendado)
<SCRIPT> var str = "Zhaochucichuzuiduodezifu"; var o = {}; para (var i = 0, comprimento = str.Length; i <comprimento; i ++) {// var char = str [i]; var char = str.Charat (i); if (o [char]) {// char is a um object o of object = o objt = o, o que é um attr. ocorrências o [char] ++; // adicione 1} else {o [char] = 1; // Se a primeira ocorrência, o número de ocorrências é marcado como 1}} console.log (O); // A saída é um objeto completo, registrando cada caractere e seu número de ocorrência // viajando pelo objeto, encontrando os caracteres com mais ocorrências e o número de ocorrências var max = 0; var maxchar = null; para (var chave em o) {if (max <o [key]) {max = o [key]; // o maxchar com o maior número de ocorrências maxchar = key; // O caractere correspondente é a chave atual}} console.log ("as mais ocorrências são" + maxchar); console.log ("O número de ocorrências é" + max); </sCript>O resultado do código acima sendo executado e, em seguida, produzir o console é o seguinte:
Este método resolve o problema do método um e podemos registrar claramente o número de ocorrências de cada caractere. Quando há dois caracteres com o mesmo número de vezes, eles podem ser vistos claramente no objeto.
No entanto, ainda existem deficiências. Você não pode produzir diretamente os caracteres com o maior número de vezes ao mesmo tempo. Isso requer condições adicionais de julgamento. O código perfeito é o seguinte o (∩_∩) o
<SCRIPT> var str = "nininihaoa"; var o = {}; para (var i = 0, comprimento = str.Length; i <comprimento; i ++) {var char = str.charat (i); if (o [char]) {o [char] ++; // adicione 1} else {o [char] = 1; // Se a primeira ocorrência for registrada, o número de vezes é registrado como 1}} console.log (O); // A saída é um objeto completo, registrando cada caractere e seu número de ocorrência // viajando pelo objeto e encontrando o caractere com mais ocorrências var max = 0; for (var tecla em o) {if (max <o [key]) {max = o [chave]; // aquele com o maior número de max sempre armazenado}} para (var chave em o) {if (o [key] == max) {//console.log(key) ;console.log("Os personagens são " + chave); console.log (" O número de ocorrências é " + max);}}Os resultados são os seguintes:
O acima é o personagem que o editor apresenta a você que os caracteres mais comuns aparecem na string js. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!