3 febrero, 2023

FUNCIÓN PARA GENERAR SUBCADENAS CON CARACTERES ALFANUMÉRICOS ALEATORIOS CON TYPESCRIPT

Hola a todos,

Parece que este va a ser el último post del año!, y lo voy a acabar con typescript. El tema que quiero tratar es el de la generación de números aleatorios con typescript, y aunque ya lo traté en este post: GENERANDO SUBCADENAS CON CARACTERES ALFANUMÉRICOS ALEATORIOS Y TYPESCRIPT creo que la función necesitaba una actualización.

Lo quiero hacer es que cuando ejecute la función pueda indicar no solo el número de caracteres de la función sino la cantidad de cadenas o códigos a generar. Es decir, que si escribo la función así, me tendrá que generar 10 filas de 4 caracteres aleatorios cada una de ellas:

El motivo del post y del ejercicio no es tanto el de generar los caracteres aleatorios sino el de ser capaces de derramar el resultado de una matriz y transponer los resultados en vertical sin usar la función nativa de Excel.

Para ello, el código que he programado es el siguiente:

/**
* @customfunction
* @returns {string[][]}
*/
function ALFANUM_RANDOM(nNumero, nCifras) {
  var numeros: string = '0123456789';
  var letras = 'abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ';
  var simbolos = '!"#$%&()*+,-./;<=>?@[\]^_`{|}~'
  var sCadena = (numeros + letras + simbolos)
  var lCadena = sCadena.length
  var miCadena = ''
  //primer loop numero de códigos segundo loop numero de caracteres
  for (var j = 0; j < nCifras; j++) {
    for (var i = 0; i < nNumero; i++) {
      miCadena += sCadena.charAt(Math.floor(Math.random() * lCadena));
    }
    miCadena = miCadena + ':'
  }
  var misCadenas = miCadena.slice(0, -1).toString().split(':')
  //creamos función para transponer el resultado en vertical
  var transponer = misCadenas => misCadenas[0].map((col, c) => misCadenas.map((row, r) => misCadenas[r][c]))
  //mostramos resultado de la función
  return transponer ([misCadenas])
};

Ojo, no va a generar longitudes aleatorias en cada fila, siempre tendrá la longitud que le pasemos por el primer argumento (nNumero). Si lo necesitáis de otra forma, podéis utilizar la función del primer post y combinarla con aleatorio.entre y os lo generará de esa forma.

Y esto es todo, espero que os haya resultado de interés.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies