Skip to content

Instantly share code, notes, and snippets.

@joseanpg
Created August 13, 2011 14:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save joseanpg/1143902 to your computer and use it in GitHub Desktop.
Save joseanpg/1143902 to your computer and use it in GitHub Desktop.
/* Son objetivos fundamentales:
* - Minimizar las funciones ECMAScript utilizadas
* - Optimizar en espacio, evitando la creación de arrays transitorios
*
* Suponemos que no se utilizará esta función con arrays creados
* en frames externos, con lo cual instanceof Array es seguro
*/
function aplaneitor(soa,acu) {
if (soa instanceof Array) {
for (var j=0, len = soa.length;j<len;j++) {
aplaneitor(soa[j],acu);
}
}
else {
acu.push(soa);
}
}
function phineas(a,sep) {
var acu = [];
aplaneitor(a,acu);
//Lo que sigue puede lograrse con un simple acu.join(sep)
//pero estoy evitando utilizar las funciones de Array.prototype
var text = acu[0].toString();
for (var j = 1, len= acu.length; j<len; j++) {
text += sep+acu[j];
}
return text;
}
console.log(phineas(['a',['b',['c',['d']]]],'*'));
console.log(phineas(["hola", ["soy", ["juan", "fernandez"] ], "y", ["no", "tengo", ["dinero"] ] ],'+'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment