Necesito contar la aparición de caracteres en una cadena dada e imprimir los caracteres únicos y la cantidad de veces que aparecieron. Entonces, por ejemplo, si recibo una cadena de 'HOLA', debería imprimirse:
H: 1, E: 1, L: 2, O: 1
Esta es una versión muy simplificada de un problema, pero la respuesta debería ponerme en la dirección correcta. ¿Cómo puedo abordar este problema?
Gracias de antemano.
Esto es más o menos cómo debería verse para que sea más fácil imprimirlo en JSON, ya puede convertirlo a String usted mismo si lo desea.
function count_occurrence(text = "") { const array_from_text = text.split(""); const result = {}; Array.from(new Set(array_from_text)).forEach(word => { const { length } = array_from_text.filter(w => w === word); result[word] = length; }); return result; }; const occurences = count_occurence("HELLO"); console.log(occurences); // {H: 1, E: 1, L: 2, O: 1}const countChars = (str) => { const charCount = {} ; for (const c of [...str]) { charCount[c] = (charCount[c] || 0) + 1 ; } return charCount ; } console.log(countChars('HELLO')) ; // {H: 1, E: 1, L: 2, O: 1}Puede usar Array.reduce() para obtener un recuento de cada aparición en la palabra de entrada.
Convertimos la palabra en una matriz usando el operador ..., luego .reduce() para crear un objeto con una propiedad para cada letra única en la palabra.
const input = 'HELLO'; const result = [...input].reduce((acc, chr) => { acc[chr] = (acc[chr] || 0) + 1; return acc; }, {}); console.log('Result:', result) .as-console-wrapper { max-height: 100% !important; }