Esto es lo que estoy haciendo:
function getIndexes(n) { return n .toString(2) .split("") .map((c, i) => [c, i]) .filter(([c, _]) => c == "1") .map(([_, i]) => i) ; } console.log(getIndexes(6)); console.log(getIndexes(7)); console.log(getIndexes(42));Explicación:
[character, index]"1"Se siente un poco exagerado.
¿Hay una forma más estándar de lograr eso?
Me importa menos el rendimiento y más el uso de algo más limpio y/o personalizado.
¡Gracias!
Si entendí bien lo que quiere lograr, aquí hay una solución alternativa:
function getIndexes(n) { const result = []; const long_n = BigInt(n); for(let i = 0n; i < 64n; ++i) { if((long_n >> i) & 1n) result.push(Number(i)); } return result; }