Necesito obtener el elemento de la matriz que tiene la longitud máxima en la matriz dada.
Supongamos que hay una matriz:
const a = ["apple","banana","mango","watermelon","grapes"]; Aquí necesito obtener watermelon como salida porque la watermelon tiene la longitud máxima.
A continuación se muestra lo que se ha intentado
let length7=0; let maxlength = function fn() { for (i7=0; i7<a.length; i7++) { if (a[i7].length > length7) { length7=a[i7].length } }; return length7; }; console.log(maxlength()) De esto obtengo la longitud de la cadena máxima (como 10). Pero necesito obtener la salida como watermelon .
Explique una solución óptima al problema.
Puede almacenar el elemento más largo en una variable separada y devolverlo.
let maxlength = function fn() { let length7 = 0; let value = ""; for (i7 = 0; i7 < a.length; i7++) { if (a[i7].length > length7) { length7 = a[i7].length; value = a[i7]; } } return value; }La siguiente solución puede ser una posible solución para lograr el objetivo deseado.
Fragmento de código
const getLongestWordIn = arr => ( arr.reduce( (acc, word) => (word.length > acc.length ? word : acc), "" ) ); const a = ["apple","banana","mango","watermelon","grapes"]; console.log(getLongestWordIn(a));Explicación
.reduce para iterar sobre la matrizacc se inicializa como una cadena vacía ""acc , entonces asigne esa palabra a accaccDebe almacenar (1) solo el elemento con la longitud máxima o (2) tanto el elemento como su longitud máxima. También debe mover la variable max actual ( max7 en su caso) dentro de la función. Juntando esto y optando por (2):
function longestElement(arr) { if (!arr.length) return; // empty array let longest = arr[0]; for (let i = 1; i < arr.length; i++) longest = arr[i].length > longest.length ? arr[i] : longest; return longest; } let a=["apple","banana","mango","watermelon","grapes"]; console.log(longestElement(a)); // "watermelon" Si desea acortar esto, puede usar reduce :
const longestElement = (arr) => arr.reduce((x, y) => x.length > y.length ? x : y);