Estoy tratando de usar la función de reducción para encontrar la matriz de longitud máxima en las matrices , así que probé este enfoque al principio, pero no funcionó.
const arrays = [[1],[3,3,4],[3,4],[4,5],[6]] let maxLength = arrays.reduce( (acc, cur) => { return acc.length > cur.length ? acc.length : cur.length }) console.log(maxLength) // output : 1así que traté de obtener la longitud de otra manera y funcionó
const arrays = [[1],[3,3,4],[3,4],[4,5],[6]] let maxLength = arrays.reduce( (acc, cur) => { return acc.length > cur.length ? acc : cur }).length console.log(maxLength) // output : 3¿Alguien puede explicar cuál es la diferencia entre los dos enfoques?
Si está interesado en la longitud de la matriz más larga, almacene la longitud en el acumulador (como en el primer ejemplo); si está interesado en la matriz con la mayor longitud, almacene la matriz en el acumulador (como en el segundo ejemplo). Lo que no puedes hacer es mezclar y combinar.
En este caso, debe proporcionar un valor inicial (por ejemplo, 0 ) para reduce() .
const arrays = [[1],[3,3,4],[3,4],[4,5],[6]]; const max = arrays.reduce((a, {length}) => Math.max(a, length), 0); console.log(max);En este caso, no es necesario que proporcione un valor inicial, ya que el valor predeterminado es el primer elemento de la matriz.
const arrays = [[1],[3,3,4],[3,4],[4,5],[6]]; const max = arrays.reduce((a, v) => v.length > a.length ? v : a); console.log(max);En el primer código, la función reduce devuelve un número, mientras que en el segundo devuelve una matriz. Cuando devuelve un número, la próxima vez que se llama a su función, toma la longitud de un número, no una matriz. El segundo código es correcto, porque estás tomando la longitud de una matriz cada vez.