Foros del Web » Programando para Internet » Javascript »

Contar palabras iguales

Estas en el tema de Contar palabras iguales en el foro de Javascript en Foros del Web. hola amigos, estoy intentando hacer una funcion que pasandole un texto/cadena te cuente las palabras que hay iguales, por ejemplo si introducimos en el formulario ...
  #1 (permalink)  
Antiguo 13/01/2011, 06:55
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 10 meses
Puntos: 0
Contar palabras iguales

hola amigos, estoy intentando hacer una funcion que pasandole un texto/cadena te cuente las palabras que hay iguales, por ejemplo si introducimos en el formulario "hola me llamo pepe y pepe me dicen" deberia devolvernos: hola=1, me=2, llamo=1, pepe=2, y=1, dicen=1.

haber si podeis echarme una mano, un saludo y gracias de antemano!!
  #2 (permalink)  
Antiguo 13/01/2011, 07:41
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Contar palabras iguales

Hola

Trabaja con esto
Código Javascript:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta name="http-equiv" content="Content-type: text/html; charset=UTF-8"/>
  5. <script type="text/javascript">
  6. Array.prototype.EliminarRepetidos = function () {
  7. var arr_limpio = [];
  8. var val_eliminados = [];
  9. var cantidad = {};
  10.     for(var i = 0; i < this.length; i++){
  11.         if(!(this[i] in cantidad)) {
  12.             cantidad[this[i]] = 0;
  13.             arr_limpio.push(this[i]);
  14.             cantidad[this[i]]++;
  15.         } else {
  16.             val_eliminados.push(this[i]);
  17.             cantidad[this[i]]++;
  18.         }
  19.     }
  20.  
  21. var repeticiones = "";
  22.     for (j=0; j < arr_limpio.length; j++) {
  23.         repeticiones +="El elemento " + arr_limpio[j] + " se repite ------ " + parseInt(cantidad[arr_limpio[j]]-1) +" veces\n"
  24.     }
  25.     alert("Arreglo Original: " + array.toString() + "\nArreglo Limpio: " + arr_limpio.toString() + "\nValores Eliminados: " + val_eliminados.toString() + "\nCantidad de veces que se repite cada elemento\n=======================\n" + repeticiones)
  26. }
  27.  
  28.  
  29. function ContarRepetidos() {
  30. var array1 = [1,2,3,4,5,6,7,8,9,0];
  31. var array2 = [1,3,5,7,9];
  32. var valores = array1.concat(array2);
  33. for (i=0; i < valores.length; i++) {
  34. cadena = valores.join('');
  35. }
  36. array = cadena.split('');
  37. obj = array.EliminarRepetidos();
  38. }
  39.  
  40.  
  41. function ContarRepetidos2(valores) {
  42. var val = valores;
  43. array = val.split('');
  44. obj = array.EliminarRepetidos();
  45. }
  46. </script>
  47. </head>
  48. <body>
  49. <h1>Se Eliminan elementos repetidos.<br/>
  50. Se cuenta el número de veces que se repite cada elemento</h1>
  51. <input type="button" value="ver" onclick="ContarRepetidos();" /><br />
  52. <input type="button" value="ver" onclick="ContarRepetidos2('1283434536473846390');" />
  53. </body>
  54. </html>
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 13/01/2011, 07:46
4ng3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Contar palabras iguales

Mire este codigo, mas o menos es lo que quiere...

Código Javascript:
Ver original
  1. function contarPalabras(str){
  2.         palabras = str.split(' ');
  3.         obj = new Array();
  4.         for(i=0 ; i<palabras.length; i++){
  5.             //Ya encontro la primera, entonces sumo
  6.             obj[palabras[i]] = 1;
  7.             for(j=0; j<palabras.length; j++){
  8.               //Evitamos que se cuente de nuevo
  9.               if(i != j){
  10.                if(palabras[i] == palabras[j]){
  11.                  obj[palabras[i]]++;
  12.                 }
  13.               }
  14.             }
  15.         }
  16.         alert("Hola: "+obj['hola']);
  17.         alert("pepe: "+obj['pepe']);
  18.         alert("me: "+obj['me']);  
  19.       }
  20.       contarPalabras("hola me llamo pepe y pepe me dicen");

lo unico que faltaria es recorrer el arreglo obj
  #4 (permalink)  
Antiguo 13/01/2011, 11:01
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Contar palabras iguales

4ng3r eso es casi lo que necesito, pero en vez de darle la frase predeterminada la tiene que coger de un "textarea" osea que no sabemos las palabras que introduciremos porque serán aleatorias porque a la funcion le pasamos el this.value del textarea, entonces nos deberia devolver todas las palabras introducidas y la cantidad de veces repetidas...
  #5 (permalink)  
Antiguo 13/01/2011, 11:08
4ng3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Contar palabras iguales

Si claro yo se .... este codigo es dinamico en vez de pasarle la frase le envian esto
Código Javascript:
Ver original
  1. contarPalabras(document.getElementById("IDTextAreal").value());

la cuestión es saber como van a recorrer el array obj o la unica seria crear un objeto que almacene la palabra y cuantas veces se repite .... creo q esta es mejor opcion
  #6 (permalink)  
Antiguo 13/01/2011, 11:33
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Contar palabras iguales

muchas gracias por todo ha sido de gran ayuda :)

Última edición por crackerluck; 14/01/2011 a las 10:01

Etiquetas: contar, iguales, palabras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:04.