Esta función encuentra el valor medio de una matriz. Pero la declaración condicional no tiene sentido para mí, ya que arr.length === 0 nunca es cierto, pero la función aún funciona para números pares e impares. Creo que la condición debería ser arr.length % 2 !== 0 y también funciona, pero incluso entonces no veo cómo se devuelve el valor correcto, ya que para una matriz de 1-13, la función devolvería el Math .piso de 13/2 = 6,5 que es 6, pero devuelve 7. Y para una matriz 1-12 devolvería el Math.ceil de (12-1)/2 = 5,5 que también es 6, pero de nuevo devuelve 7, que es lo que se supone que debe hacer, pero no veo cómo las declaraciones condicionales producen este resultado.
let x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; // if even, the number closer to end is returned function findMiddle(arr) { return arr.length === 0 ? arr[Math.floor(arr.length / 2)] : arr[Math.ceil((arr.length - 1) / 2)]; } console.log(findMiddle(x))Dado que la condición siempre es falsa, esta función siempre devolverá el primer valor que es arr[Math.ceil((arr.length - 1) / 2)] que siempre es correcto, supongo.
arr.length es 13 , arr.length / 2 será 6.5 , luego Math.ceil(arr.length / 2) será 7 y finalmente arr[Math.ceil(arr.length / 2)] dará como resultado arr[7] que es 8arr.length es 12 , arr.length / 2 será 6 , luego Math.ceil(arr.length / 2) será 6 y finalmente arr[Math.ceil(arr.length / 2)] dará como resultado arr[6] que es 7 .Conclusión: La condición no está haciendo nada allí. Es completamente inútil si siempre lo proporciona matrices no vacías. Su función, en ese caso, será simplemente:
function findMiddle(arr) { return arr[Math.ceil(arr.length / 2)] }Y dará los mismos resultados.
Si arr no tiene elementos, esta función devuelve arr[0] que no existe, por lo que arroja un error. (editar: esto sucedería en cualquier otro idioma, pero javascript siendo javascript en realidad devuelve indefinido)
Para un número par de elementos, devuelve el segundo de los dos elementos intermedios.
Para un número impar de elementos, devuelve el del medio.
En su ejemplo, devuelve el elemento en el índice 6. Este elemento tiene el valor 7.