Cómo crear numeración jerárquica de una lista tabulada con Google Apps Script

Artículo perteneciente a colaboraciones con Stack Overflow

Hace ya unos meses el compañero Rubén de stackoverflow propuso un problema muy sencillo de explicar pero bastante más complejo de resolver de lo que parecería en un principio. El link lo teneis aquí.

Básicamente lo que se pide es dada una tabla tabulada con titulos y subtitulos hagamos un programa que nos diga para cada elemento su numeración jerarquica (1 , 1.1, 1.2.2.1 , etc...)


He de reconocer que a este problema le he dado muchas vueltas por que he intentado encontrar una solución elegante, pero al final me he tenido que conformar con la solución menos mala. Alguien se atreve a hacer una versión mejor?

function AutoIndex(values)
{
  var res=[];
  var level = [0,0,0,0,0,0,0,0,0,0];

  for(var i = 0 ; i < values.length ; ++i)
  {
     var row = values[i];
     for(var j = 0 ; j < row.length  ; ++j)
     {
       if( row[j] != "" )
       {
         level[j]++;
         for(var k = j+1 ; k < level.length ; ++k )
         {
           level[k] = 0;
         }
       }
     }
    var tag = level[0];
    for(var j = 1 ; j < level.length ; ++j )
    {
       if ( level[j] != 0 )
       {
         tag += "." + level[j];
       }
    }
 
    res.push(tag);
  }

  return res;

}

Una vez copiado el código desde la hoja de cálculo solo tenéis que hacer = AutoIndex ( rango de vuestros datos )

Espero que os sirva y me encantaría ver los códigos que colgáis a ver si son más elegantes que el mio.

Nos vemos

No hay comentarios:

Publicar un comentario en la entrada

Related Posts Plugin for WordPress, Blogger...