Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: LokiJ en 16 Febrero 2017, 21:43 pm



Título: Problema de javascript
Publicado por: LokiJ en 16 Febrero 2017, 21:43 pm
Hola,

Soy nuevo en JS y la programación en general, y tengo este problema que ya está resuelto pero no entiendo el procedimiento.

El problema consiste en que dada una cadena de texto, la función devuelva un objeto cuyas propiedades sean las palabras (sin repetir) y las características sean el número de veces que esa palabra se repite en la cadena.

Esta es la resolución:

Código
  1. function countWords(str) {
  2.  
  3.  if (!str.length) return {};  // Esto es simplemente porque pide que si la cadena está vacía, devuelva un objeto vacío.
  4. str = str.split(" ");
  5.  var result = {};
  6.  var key;
  7. for(var i=0;i<str.length;++i){
  8.     key = str[i];
  9.  
  10.     if( "undefined" != typeof(result[key]) )   // <-- [b]Este if no lo entiendo[/b]
  11.        result[key]++;
  12.     else
  13.        result[key]=1;
  14.  }
  15.  return result;
  16. }
  17.  
  18. countWords('ask a bunch get a bunch');   // Esto devuelve { ask: 1, a: 2, bunch: 2, get: 1 }
  19.  

Gracias


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: Problema de javascript
Publicado por: engel lex en 16 Febrero 2017, 23:28 pm
es mejor verlo

Código
  1. if( typeof(result[key]) != "undefined" )

si tipo de varible de el result en posición key no es indefinido

en jscript si un elemento de un objeto o array no está declarado, no lanzará un error en tiempo de ejecución como otros lenguajes, sino que simplemente su contenido será no definido (undefined), el lo que hace es ver si el elemento es no definido, si no está definido, en la linea 13 lo define


Título: Re: Problema de javascript
Publicado por: LokiJ en 21 Febrero 2017, 19:20 pm
Vale, muchas gracias no había caído en eso.
Tomo nota de como postear para futuras dudas.

Un saludo