DEV Community

kevingo710
kevingo710

Posted on • Updated on

Count characters in your string JS-Codewars [ES]

El enunciado del ejercicio dice:

La idea principal es contar todos los caracteres que aparecen en una cadena. Si tiene una cadena como aba, entonces el resultado debería ser {'a': 2, 'b': 1}.

¿Qué pasa si la cadena está vacía? Entonces el resultado debería ser un objeto literal vacío, {}.

Entonces tenemos definidas las posibles entradas:
cadena de caracteres como "aba"

Y las salidas:
un objeto como {'a':2, 'b':1}

Pensando en la entrada para poder hacer el conteo deberíamos poder recorrerla por lo cual si es un string podríamos convertirla en un array aquí tenemos varias opciones una usar el "operador spread" o "split" para usar todos lo métodos que javascript nos provee para recorrer o iterar pueden ser "map" o "forEach" bien hemos avanzado ya podemos recorrer los caracteres ahora pensemos en la salida debe ser un objeto por lo cual podemos declarar un objeto vacío donde introduciremos los caracteres y el conteo como hacemos esto? dentro de la iteración colocamos dentro del objeto el carácter y luego preguntamos si este ya existe o es nuevo y en base a este pregunta decidimos si inicializar en contador en 1 o sumamos +1 de nuevo esto lo podemos hacer de dos formas usando un "operador ternario" o el "operador cortocircuito".

A continuación el ejercicio

function count (string){

let obj = {} ;
let arr = [...string] ;

arr.map(item => {
obj[item] = obj[item] + 1 || 1 ;
})

return obj;


}
Enter fullscreen mode Exit fullscreen mode

Segunda opción de solución - usando las alternativas planteadas

function count (string){
const obj = {};

string.split('').forEach( item =>{

obj[item] = obj[item] ? obj[item] + 1 : 1 ;

});

return obj;

}
Enter fullscreen mode Exit fullscreen mode

Discussion (0)