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.