Tengo una matriz de valores de distancia fijos o aleatorios, multiplicados por la escala de un mapa, mapScale . Los valores aleatorios se pueden generar usando la función randomNum(num1, num2) .
Estoy buscando asignar a la distance variable un nuevo valor, para cada iteración dentro de un ciclo, usando una posición de índice de matriz de distances predeterminada. El valor de la posición del índice de la matriz debe permanecer igual para cada iteración dentro del bucle (por ejemplo, 6), pero el valor de la distance debe cambiar para cada iteración si el elemento de la matriz es un número aleatorio para la posición de índice especificada.
Tenga en cuenta que si se especifica una posición de índice de "aleatorización", quiero obtener un nuevo número aleatorio para cada iteración (por ejemplo, 6,22, 7,08, 9,45, etc.) y no simplemente uno predeterminado constante (por ejemplo, 7,84 ).
El siguiente código funciona, pero llamar a randomNum para cada iteración probablemente no sea óptimo, especialmente porque ya conocemos la posición de índice del elemento que buscamos recuperar. Tenga en cuenta también que el número de iteraciones, n , varía de aproximadamente 500 a aproximadamente 10 000.
var indexPosition = findIndexPosition(...) for (let i = 0; i <= n; i++){ var distances = [ mapscale * 0.25, mapscale * 0.75, mapscale * 1, mapscale * 1.5, mapscale * 2, mapscale * randomNum(3, 5), mapscale * randomNum(6, 10), mapscale * randomNum(15, 50), mapscale * randomNum(100, 500), mapscale * randomNum(1000, 2500), ]; var distance = distances[indexPosition] [...] } Me gustaría encontrar la solución más elegante (velocidad óptima / balance de número de línea) para lograr el comportamiento deseado. Estoy abierto a usar una declaración de switch , una function , un object , etc., siempre que el código sea conciso y el rendimiento esté optimizado.
Qué tal esto:
var indexPosition = findIndexPosition(...) const distances = [ () => mapscale * 0.25, ... () => mapscale * randomNum(1000, 2500) ]; for (let i = 0; i <= n; i++){ var distance = distances[indexPosition]() ... }