¿Cómo se crea una matriz de búsqueda inversa de manera eficiente?
por ejemplo [5, 3, 1, 4, 2] => [3, 5, 2, 4, 1]
Obviamente una manera simple es:
const input = [5, 3, 1, 4, 2]; const output = []; for (i = 0; i < input.length; i++) { output[input[i] - 1] = i + 1; }Tienes que pasar por cada elemento de la entrada (para leerlo) y cada elemento de la salida (para escribirlo): ¡no hay forma de salir de eso!
Mi única sugerencia para acelerarlo un poco es predimensionar la matriz de salida.
const input = [5, 3, 1, 4, 2]; const output = new Array(input.length); input.forEach( (value, i) => output[value - 1] = i + 1 ) console.log(output)