Crear jerarquía de una lista 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 tenéis aquí.

Básicamente lo que se pide es dada una tabla tabulada con títulos y subtítulos hagamos un programa que nos diga para cada elemento su numeración jerárquica (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 mío.

Nos vemos

No hay comentarios:

Publicar un comentario

Tal vez te interese