crearangos
by abubelinha
HTML
LISTADO:<br><textarea id=listaorixinal rows=3 columns=2 style='border:1px solid blue;'>
</textarea>SEPARADOR:<input id=sep type=text value=','>
<button onclick="procesalista();">procesar</button>
<br>RESULTADO:<br>
</button>
<div id=divresultado style='border:1px solid red;'>
lista de rangos numéricos
</div>
JavaScript
var listaordenada=[12,12,13,14,15,3,123,83,84,85,3,408,123,409,410, 581,123,582,604,605,123,606,607,609,611,4,5,6,7,21,3];
var sep=document.getElementById('sep').value;
document.getElementById('listaorixinal').value=listaordenada.join(sep);
function procesalista() {
var sep=document.getElementById('sep').value;
alert('separador: "'+sep+'"');
listaordenada=document.getElementById('listaorixinal').value.split(sep);
var actual=null,previo=null;
var rollo='';//listaordenada[0];
for(i=0;i<listaordenada.length;i++) {
listaordenada[i]=parseInt(listaordenada[i]);
}
listaordenada.sort(function (a,b) {
return a - b;
});
for(i=0;i<listaordenada.length;i++) {
if(i==0) {
rollo=listaordenada[i];
} else {
if(listaordenada[i]==listaordenada[i-1]+1) {
if(rollo[rollo.length-1]!='-')
rollo+='-';
} else {
rollo+=', '+listaordenada[i];
}
if(listaordenada[i]!=listaordenada[i+1]-1)
if(listaordenada[i]==listaordenada[i-1]+1)
rollo+=listaordenada[i];
}
}
rollo='<b>Rangos:</b> '+rollo+'<hr><b>Lista ordenada:</b> '+listaordenada.join(sep);
document.getElementById('divresultado').innerHTML=rollo;
}