Si j'ai le tableau suivant:
array = ['a', 'abcde', 'ab'] ;
8 Réponses :
Vous pouvez utiliser JQuery's's chacun () code> pour itérer un Petit plus agréable.
var maxLength = 0;
for (var i = 0, length = array.length; i < length; i++) {
maxLength = Math.max(maxLength, array[i].length);
};
Merci pour toutes les réponses - toutes les solutions fonctionnaient parfaitement. Pour toute personne intéressée, une légère addition doit être faite si les éléments de tableau sont numériques:
une façon (éventuellement déchets) de faire cela, sans utiliser jQuery:
Rien de mal avec un bon vieux pour la boucle, probablement plus rapide que d'autres solutions. Vous pouvez tester une méthode natif chaque i>.
À en juger par le Downvote reçu, je suppose que l'auto-déprécation n'est pas une bonne idée ici. Bonne idée de chaque cependant.
Il est possible de convertir cette expression autonome en utilisant array.reduce code>.
Il y a plusieurs façons de le faire. P>
Je voudrais parcourir tous les éléments de la matrice et stockeriez l'élément le plus long dans une variable locale. Vous obtenez l'élément le plus long en comparant le premier élément de tableau avec le second, puis en stockant le plus long. Puis allez et comparez chaque élément avec le plus long jusqu'à présent. P>
Vous avez juste besoin d'une seule boucle pour le faire. P>
one-liner pour vous: Exemple de travail: http: //jsfiddle.net/5sdbx/ b> p> Vous pouvez le faire sans jQuery dans les navigateurs plus récents (ou même les navigateurs plus anciens avec un Mise en œuvre de la compatibilité de array.pototype.map code>) aussi: p>
Heh, j'étais sur le point d'écrire exactement cette ligne, bien que possible sans JQuery.
@Tim sans jQuery? Es-tu fou? I>: P
@IM: Ouais, pensé à ce sujet, mais c'est-à-dire à IE8 et à Basse m'a fait réfléchir à nouveau :-) Edit: i> a ajouté.
Vous avez déjà eu votre +1. Qu'est-ce que je fais maintenant? Avoir un "bien fait". Bien fait.
Vous pouvez créer votre propre code.
Suivez ceci -> puis utilisez p>
En utilisant J'ai aussi ajouté une vérification des valeurs entier par Votre commentaire ci-dessus. p> p> array.pototype.reduce () code>, vous pouvez effectuer élégamment un math.max () code> Calcul pour chaque élément de la matrice. Peu importe si les éléments de la matrice sont des chaînes ou des sous-tableaux (matrice 2D, matrice, etc.), cela fonctionnera car chaîne code> et tableau code> Les deux ont un prototype.length () code> fonction. function(a){return a.reduce(function(r,v){return Math.max(r,!isNaN(v)?parseInt(v):v.length);},0);}
Une nouvelle réponse à une ancienne question: en ES6, vous pouvez faire encore plus de diffusion:
Math.max(...array.map(el => el.length));
Dans de tels cas, il existe une fonction très utile. Array.Rece
['a', 'abcde', 'ab'].reduce((r,s) => r.length > s.length ? r : s, 0);
Merci pour toutes vos réponses. Toutes les solutions fonctionnaient parfaitement avec l'exemple que j'ai donné, où tous les éléments de la matrice sont des chaînes. Pour toute personne intéressée, une légère addition doit être faite (je pense) si les éléments de tableau sont numériques: $ max (maxlength, élément.length); alerte (élément + '+ maxlength)}); S'il y a un moyen de faire «plus intelligent», faites le moi savoir. Merci encore pour l'aide Paul Jones