function maxRecurringChar(text) { let charMap = {}; let maxCharValue = 0; let maxChar = ''; for (let char of text) { if (charMap.hasOwnProperty(char)) { charMap[char]++; } else { charMap[char] = 1; } } for (let char in charMap) { if (charMap[char] > maxCharValue) { maxCharValue = charMap[char]; maxChar = char; } } return maxChar; }Aquí está el código que no entiendo, porque primero porque siempre devolverá 1, si siempre devolverá 1, ¿por qué necesitamos escribir el primer bucle?
El algoritmo crea un nuevo Object charMap al que se agregarán como atributos todos los caracteres del texto String. En el primer ciclo for, agrega un nuevo atributo con el nombre del carácter actual y establece el valor contado en 1 o, si ya está presente, incrementa el valor contado si el carácter ya se encontró en la cadena. Entonces, efectivamente, cuenta para cada carácter el número de ocurrencias.
En el segundo for-loop se busca en el Objeto el mayor valor contado, que será el char con el mayor conteo de ocurrencias.