Il est facile d'en définir un soi-même. C'est la puissance de JavaScript.
if(!Array.prototype.last) {
Array.prototype.last = function() {
return this[this.length - 1];
}
}
var arr = [1, 2, 5];
arr.last(); // 5
Cependant, cela peut causer des problèmes avec du code tiers qui utilise (de manière incorrecte) for..in
boucles pour itérer sur des tableaux.
Cependant, si vous n'êtes pas lié à Support du navigateur puis en utilisant la nouvelle syntaxe ES5 pour définir les propriétés peut résoudre ce problème, en rendant la fonction non dénombrable, comme suit :
Object.defineProperty(Array.prototype, 'last', {
enumerable: false,
configurable: true,
get: function() {
return this[this.length - 1];
},
set: undefined
});
var arr = [1, 2, 5];
arr.last; // 5
39 votes
Pour les cas où cela ne vous dérange pas de modifier le tableau comme effet secondaire (c'est-à-dire lorsque le tableau n'est que temporaire de toute façon), l'idiome serait le suivant
item= array.pop();
.7 votes
Voici une évaluation des performances de plusieurs des méthodes mentionnées : jsperf.com/get-last-item-from-array
5 votes
Bon sang, après avoir regardé cette page de perf, il semble que
array[array.length-1]
es chemin plus rapidement que les autres.0 votes
@JondIm mais si vous créez un tableau dans une fonction, vous devez inventer un nom local pour celui-ci (ce qui conduit à des noms tels que arr2), et vous avez 2 lignes de code au lieu d'une seule.
1 votes
(Ar[Ar.length-1])
obtient des performances 20x meilleures pour moi.0 votes
Duplicata de stackoverflow.com/questions/3216013/
0 votes
Je ne sais pas si c'est à cause de la récente mise à jour de Firefox qui devrait améliorer le JS, mais pour moi, tout ce qui n'est pas de l'ordre de l'informatique, c'est de l'ordre de l'informatique.
array[array.length - 1]
a abouti à un ralentissement de près de 99% (la solution pop même 100%^^ en absolu : pop : 3,036,947 ops/s, array[len-1] : 693,161,390 ops/s.