¿Cómo generar números en el siguiente patrón en js?
const output = [1,2,3,4,5,6,7,8,9,10,20,30,40,50,60,70,80,90,100,200,300,400,500,600,700,800,900,1000,2000,3000,4000,5000, ... ]Aquí hay otra solución. Básicamente, recorres los números del 1 al 9 una y otra vez, multiplicándolos por 1, 10, 100, etc.
const maxExponent = 5; let exponent = 0; let result = []; while (exponent <= maxExponent) { for (let i = 1; i < 10; i++) { result.push(i * Math.pow(10, exponent)); } exponent++; } console.log(result);Podría tomar el logaritmo de 10 y agregar uno al dígito encontrado.
const fn = i => { const l = Math.floor(Math.log10(i)), d = i / 10 ** l; return (d + 1) * 10 ** l; }; for (i = 1; i < 10000; i = fn(i)) { console.log(i); } .as-console-wrapper { max-height: 100% !important; top: 0; }Un enfoque no matemático
const fn = i => +i.toString().replace(/./, d => +d + 1); for (i = 1; i < 10000; i = fn(i)) { console.log(i); } .as-console-wrapper { max-height: 100% !important; top: 0; }En realidad no es matemática, pero funciona usando string.repeat :)
max_zeros = 5; cur_zeros = 0; zero_string = '0'; output = []; for (var cur_zeros = 0; cur_zeros <= max_zeros; cur_zeros++) { for (var i = 1; i < 10; i++) { output.push( parseInt(i + zero_string.repeat(cur_zeros)) ) } } console.log(output)