Skip to content

Instantly share code, notes, and snippets.

@joseanpg
Created August 21, 2011 19:41
Show Gist options
  • Save joseanpg/1161049 to your computer and use it in GitHub Desktop.
Save joseanpg/1161049 to your computer and use it in GitHub Desktop.
GEJS-4 crearSaludos.js Soluciones
/*********************************************************************
Solución funcional
La más elegante, y ahora todos sabemos ;)
*********************************************************************/
function crearSaludos1(array) {
return array.map(function(nombre){
return function(){console.log("Hola " + nombre);}
});
}
/*********************************************************************
Soluciones imperativas
*********************************************************************/
/*--------------------------------------------------------------------
Solución 2
--------------------------------------------------------------------*/
function crearUnSaludo(nombre) {
return function() {console.log('Hola '+nombre);}
}
function crearSaludos2(array) {
var resultado = [];
for (var j=0, len = array.length; j<len; j++) {
resultado.push(crearUnSaludo(array[j]));
}
return resultado;
}
/*--------------------------------------------------------------------
Solución 3
Podríamos llevar crearUnSaludo al cuerpo de crearSaludos
--------------------------------------------------------------------*/
function crearSaludos3(array) {
var resultado = [];
for (var j=0, len = array.length; j<len; j++) {
resultado.push(
function(nombre) {
return function() {
console.log("Hola " + nombre);
}
}(array[j])
);
}
return resultado;
}
/*--------------------------------------------------------------------
Solución 4
Podríamos "elevar" esa función de manera que todo
el cuerpo del bucle quede dentro de ella
--------------------------------------------------------------------*/
function crearSaludos4(array) {
var resultado = [];
for (var j=0, len = array.length; j<len; j++) {
(function(nombre) {
resultado.push( function(){
console.log("Hola " + nombre);
});
})(array[j]);
}
return resultado;
}
/*--------------------------------------------------------------------
Solución 5
En un futuro podremos sustituir lo anterior por una
expresión *let* (en este momento sólo disponible en
algunos engines)
--------------------------------------------------------------------*/
function crearSaludos5(array) {
var resultado = [];
for (var j=0, len = array.length; j<len; j++) {
let (nombre=array[j]) {
resultado.push( function() {
console.log("Hola " + nombre);
});
}
}
return resultado;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment