Problema de javascript

Iniciado por LokiJ, 16 Febrero 2017, 21:43 PM

0 Miembros y 1 Visitante están viendo este tema.

LokiJ

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 (javascript) [Seleccionar]
function countWords(str) {
 
 if (!str.length) return {};  // Esto es simplemente porque pide que si la cadena está vacía, devuelva un objeto vacío.
str = str.split(" ");
 var result = {};
 var key;
for(var i=0;i<str.length;++i){
    key = str[i];
   
    if( "undefined" != typeof(result[key]) )   // <-- [b]Este if no lo entiendo[/b]
       result[key]++;
    else
       result[key]=1;
 }
 return result;
}

countWords('ask a bunch get a bunch');   // Esto devuelve { ask: 1, a: 2, bunch: 2, get: 1 }


Gracias


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

engel lex

es mejor verlo

Código (javascript) [Seleccionar]
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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

LokiJ

Vale, muchas gracias no había caído en eso.
Tomo nota de como postear para futuras dudas.

Un saludo