Cita:
Iniciado por zerokilled solo por simple coincidencia, el resultado aparenta estar bien... pero el código está mal. si agregas más elementos al array perhermanos o incluso si cambias el orden, por ejemplo Array(p2,p1,p3), vas a notar que el resultado no es el mismo. el error está en el bucle interno; estás cambiando la condición del bucle mediante una resta que no tiene sentido. especificamente, la resta con la variable j.
en fin, esta es mi adaptación al código utilizando como base el código inicial.
Código:
function arbol(){
var p1=new Array("10001","2","10121952","3");
var p2=new Array("10002","5","15121955","6");
var p3=new Array("10003","8","23081947","9");
var perhermanos=new Array(p2,p1,p3);
var perhermanosbis=new Array();
var mayor=0;
while (perhermanos.length){
if (perhermanos.length == 1){ perhermanosbis.push(perhermanos.pop()); break; }
var fechamasantigua="9999999999";
for(var i=0, len=perhermanos.length; i<len; i++){
// YYYYMMDDXX
var fechaactual = perhermanos[i][2].substr(4,4) + perhermanos[i][2].substr(2,2) + perhermanos[i][2].substr(0,2) + perhermanos[i][0].substr(3,2);
if (Number(fechaactual) < Number(fechamasantigua)){
fechamasantigua=fechaactual;
mayor=i;
} else { continue; }
} // Fin for.
perhermanosbis.push(perhermanos.splice(mayor,1));
} // Fin for.
console.log(perhermanosbis.toString());
} // Fin function arbol.
Gracias por tu dedicación
zerokilled. Ya me había dado cuenta de que mi código estaba errado. Y, para el caso que analizamos, ya lo había corregido (de todos modos estudiaré el tuyo que me parece más elegante y conciso, y del que creo que aprenderé aspectos que desconozco).
Pero la cosa no termina allí, porque el problema concreto que debo resolver es más complejo (el código que informé al principio es una adaptación simple para no liar al personal): de momento tengo más de 60 vectores pXX, y algunos de ellos pueden no traer el formato DDMMAAAA en su campo [2]. Con el código corregido fui a incorporar estos vectores con fecha fuera de formato a la matriz perhermanosbis... ¡y tuve problemas nuevamente! Así que me pongo a trabajar en ello y reportaré el resultado cuando esté seguro de que funciona (tu último código, por lo que pude probar, funciona de cine).
Ah, y además me pondré a estudiar sort (y lo que ello conlleva, creo que expresiones regulares), porque esto de reinventar la rueda a veces cansa un poco
Gracias nuevamente.