C'est un peu bizarre que la classe JavaScript Array n'offre pas une dernière méthode pour récupérer le dernier élément d'un tableau. Je sais que la solution est simple (Ar [Ar.length-1]), mais, encore, c'est trop fréquemment utilisé.
Y a-t-il des raisons sérieuses pour lesquelles cela n'est pas encore intégré?
javascript
Nikhil Garg
la source
la source
item= array.pop();
.array[array.length-1]
c'est beaucoup plus rapide que les autres.(Ar[Ar.length-1])
obtient des performances 20 fois meilleures pour moi.Réponses:
Parce que Javascript change très lentement. Et c'est parce que les gens mettent à jour lentement les navigateurs.
De nombreuses bibliothèques Javascript implémentent leur propre
last()
fonction. Utilisez-en un!la source
last()
fonction. La question portait sur la nature du développement du langage de base Javascript lui-même.Vous pouvez faire quelque chose comme ceci:
Afficher l'extrait de code
La quantité de méthodes d'assistance pouvant être ajoutées à un langage est infinie. Je suppose qu'ils n'ont tout simplement pas envisagé d'ajouter celui-ci.
la source
Il est facile d'en définir un vous-même. C'est la puissance de JavaScript.
Cependant, cela peut causer des problèmes avec le code tiers qui utilise (à tort) des
for..in
boucles pour itérer sur des tableaux.Cependant, si vous n'êtes pas lié par des problèmes de prise en charge du navigateur , l'utilisation de la nouvelle syntaxe ES5 pour définir les propriétés peut résoudre ce problème, en rendant la fonction non énumérable, comme ceci:
la source
for..in
problème. Bien sûr, nous n'en sommes pas encore là avec une large implémentation d'ES5, mais c'est assez bon pour le savoir maintenant, car les navigateurs le rattrapent rapidement, y compris IE9.this.length - 1
évalue à-1
, qui, car il s'agit d'un nombre négatif, est traité comme une propriété de tableau et non comme un index d'élément.i = [].concat(loves).pop(); //corn
icône de chat aime le pop-corn
la source
Une autre option, surtout si vous utilisez déjà UnderscoreJS, serait:
la source
la source
null
ouundefined
?this[l-1]
vous donneraitundefined
comme d'habitude pour accéder à des propriétés inexistantes. Personnellement, je préfère que JS lève une exception plutôt que de revenirundefined
, mais JS préfère balayer les erreurs sous le tapis.Je suis venu ici à la recherche d'une réponse à cette question moi-même. La réponse par tranche est probablement la meilleure, mais je suis allé de l'avant et j'ai créé une "dernière" fonction juste pour m'entraîner à étendre les prototypes, alors j'ai pensé que j'allais la partager. Il présente l'avantage supplémentaire par rapport à certains autres de vous permettre de compter à rebours dans le tableau et de retirer, par exemple, l'avant-dernier ou le troisième au dernier élément. Si vous ne spécifiez pas de décompte, la valeur par défaut est 1 et extrait le dernier élément.
la source
last(4)
ou quelast(9)
vous perdez la signification du nom de la fonction, c'est-à-dire;last
Voici une autre façon plus simple de découper les derniers éléments
lastObj
est maintenant["barfoo"]
.Python fait cela de la même manière et quand j'ai essayé d'utiliser JS, cela a fonctionné. Je suppose que la manipulation de chaînes dans les langages de script fonctionne de la même manière.
De même, si vous voulez que les deux derniers objets d'un tableau,
vous donnera
["foobar", "barfoo"]
et ainsi de suite.la source
lastObj
contiendra["barfoo"]
. Dans tous les cas, pourquoi ferais-jeArray.prototype.slice.call(tags
plutôt que justetags.slice
?pop()
La méthode sortira la dernière valeur. Mais le problème est que vous perdrez la dernière valeur du tableaula source
Ouais, ou juste:
si vous voulez la valeur, et non une nouvelle liste.
la source