Si queremos contar las letras que aparecen en una cadena de texto con Javascript podemos utilizar la siguiente función:
function contarLetras(letras) { var objeto = {}; for(var i in letras){ objeto[letras[i]] = ( objeto[letras[i]] || 0 ) + 1; // Incrementamos el valor si el elemento ya existe } return objeto; }
Podemos verlo funcionando y probar cosas en:
Si no quisiéramos diferenciar las minúsculas de las mayúsculas deberíamos añadir «.toLowerCase()» :
function contarLetras(letras) { var objeto = {}; for(var i in letras){ objeto[letras[i].toLowerCase()] = ( objeto[letras[i]] || 0 ) + 1; // Incrementamos el valor si el elemento ya existe } return objeto; }
Si no quisiésemos contar los espacios podemos hacerlo de varias maneras, por ejemplo, podríamos eliminar todos los espacios antes de empezar a recorrer la frase con
.replace(/ /g,'');
Nos quedaría:
function contarLetras(letras) { letras = letras.replace(/ /g,''); var objeto = {}; for(var i in letras){ objeto[letras[i].toLowerCase()] = ( objeto[letras[i]] || 0 ) + 1; // Incrementamos el valor si el elemento ya existe } return objeto; }
Un ejemplo de uso de la función sería:
contarLetras('Contamos las letras de la cadena de texto')
En el primer ejemplo los devolvería el siguiente objeto:
{"C":1,"o":3,"n":2,"t":4,"a":6,"m":1,"s":3," ":8,"l":3,"e":5,"r":1,"d":3,"c":1,"x":1}
Saludosss!
Buenas Kike,
¿Podrías echarme una mano? Mi código se basa en lo que tú has hecho, pero no me funciona. ¿Podrías echarle un vistazo? El ejercicio pide que el usuario introduzca una frase, cuente los caracteres y devuelva el número de veces que se repite cada uno. La devolución del número de caracteres lo hace bien pero no me proporciona el objeto donde aparece cada carácter con su número de repeticiones.
function funcioncontadora(frase){
var frase;
frase=prompt(«Introduce una frase: «);
frase=frase.replace(/ /g, «»); //Eliminamos los espacios de la frase
caracteres=frase.length;
alert(«Tu frase tiene : » +caracteres+ » caracteres» );
var caracteresagrupados = frase.toLowerCase().split(«»).sort();
//Almacenamos en el vector los caracteres agrupados y ordenados
var contletras = {}; //Definimos un objeto donde se almacene cada letra de la frase con el numero de veces que aparece
for(var i in caracteresagrupados) {
contletras[caracteresagrupados[i]] = (contletras[caracteresagrupados[i]] || 0 ) + 1;
}
return contletras;
}
alert(funcioncontadora());
Muchas gracias!
Hola Sonia!!
Gracias por escribir, para que no te muestre la alert con [object Object] deberías devolver el return contletras en texto, para ello puedes hacerlo con return return JSON.stringify(contletras);.
Te copio tu script con el return modificado (solo he modificado el return):
Saludosss!!
Kike
Esta fatal. es muy basico!! es que no lo ve….. dale mas caña!
Fataaaaaalll!!!!
