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:
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 (http://foro.elhacker.net/reglas.htm)
-Engel Lex
es mejor verlo
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
Vale, muchas gracias no había caído en eso.
Tomo nota de como postear para futuras dudas.
Un saludo