Pourquoi JavaScript ne dispose-t-il pas d’une dernière méthode?

Il est un peu étrange 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 elle est encore trop souvent utilisée.

Des raisons sérieuses pour lesquelles ce n’est pas encore incorporé?

Parce que Javascript change très lentement. Et c’est parce que les gens mettent à jour les navigateurs lentement.

De nombreuses bibliothèques Javascript implémentent leur propre fonction last() . Utilisez-en un!

Vous pouvez faire quelque chose comme ça:

 [10, 20, 30, 40].slice(-1)[0] 

La quantité de méthodes d’assistance pouvant être ajoutées à une langue est infinie. Je suppose qu’ils n’ont tout simplement pas envisagé d’append celui-ci.

Il est facile d’en définir un vous-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 

Toutefois, cela peut entraîner des problèmes avec le code tiers qui (incorrectement) utilise les boucles for..in pour itérer sur les tableaux.

Toutefois, 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:

 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 

i = [].concat(loves).pop(); //corn

icône chat aime le pop-corn

Une autre option, surtout si vous utilisez déjà UnderscoreJS, serait:

 _.last([1, 2, 3, 4]); // Will return 4 
 Array.prototype.last = Array.prototype.last || function() { var l = this.length; return this[l-1]; } x = [1,2]; alert( x.last() ) 

Je suis venu ici chercher une réponse à cette question moi-même. La réponse à cette question est probablement la meilleure, mais je suis allée de l’avant et j’ai créé une «dernière» fonction uniquement pour pratiquer l’extension des prototypes, alors j’ai pensé que je pourrais aller de l’avant et la partager. Il présente l’avantage supplémentaire de vous permettre, en option, de compter à rebours dans le tableau et de tirer, disons, le deuxième ou le dernier ou le troisième vers le dernier élément. Si vous ne spécifiez pas de compte, la valeur par défaut est 1 et le dernier élément est retiré.

 Array.prototype.last = Array.prototype.last || function(count) { count = count || 1; var length = this.length; if (count <= length) { return this[length - count]; } else { return null; } }; var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.last(); // returns 9 arr.last(4); // returns 6 arr.last(9); // returns 1 arr.last(10); // returns null 

Voici un autre moyen plus simple de découper les derniers éléments

  var tags = [1, 2, 3, "foo", "bar", "foobar", "barfoo"]; var lastObj = tags.slice(-1); 

lastObj est maintenant ["barfoo"] .

Python le fait de la même manière et lorsque 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 les deux derniers objects dans un tableau,

 var lastTwoObj = tags.slice(-2) 

vous donnera ["foobar", "barfoo"] et ainsi de suite.

pop() méthode pop() fera sortir la dernière valeur. Mais le problème est que vous allez perdre la dernière valeur du tableau

Ouais ou juste:

 var arr = [1, 2, 5]; arr.reverse()[0] 

si vous voulez la valeur et non une nouvelle liste.