Comment puis-je obtenir le dernier élément dans un tableau?
Par exemple,
var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = $(array_fragment).last()[0];
Cela retourne une valeur vide. Mais je veux obtenir article-1
Merci.
Tout ne doit pas être fait avec jQuery.
En clair vieux javascript, vous pouvez faire:
var pg_url = array_fragment[array_fragment.length - 2]
Plus facile et plus rapide :)
On dirait que vous pouvez aussi utiliser la méthode slice
de Javascript:
> path = 'a/b/c/d';
> path.split('/').slice(-2, -1)[0];
'c'
Vous pouvez également considérer "l'avant-dernier élément du tableau" comme "le deuxième élément du tableau inversé":
> path = 'a/b/c/d';
> path.split('/').reverse()[1];
'c'
Étape 1: Utilisez split () Method pour scinder les éléments en un tableau.
var fragment_arr = fragment.split("/");
Étape 2: Utilisez slice (-2) Method pour sélectionner les 2 derniers éléments d’un tableau, le nombre négatif à sélectionner à la fin d’un tableau.
var lastTwo = fragment_arr.slice(-2);
Étape 3: Le tableau lastTwo
contient les deux derniers éléments de fragment_arr
. Vous pouvez désormais accéder à ce dernier.
var element = lastTwo[0];
alert(element);
Réponse courte : vous pouvez combiner les étapes 2 et 3 comme ci-dessous
var element = fragment_arr.slice(-2)[0];
alert(element);
Ceci peut être couvert par lodash _.nth
:
var fragment = '/news/article-1/'
var array_fragment = _.split(fragment, '/');
var second_last = _.nth(array_fragment, -2);
console.log(second_last);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
Cette question est ancienne mais reste pertinente. Slice avec la longueur-1 est le meilleur choix, mais comme alternative avec le soulignement/lodash:
_.initial () obtient tout sauf le dernier
_.last () obtient le dernier
Alors tu pourrais faire
_.last(_.initial([1,2,3,4]))
ou en chaîne:
_.chain([1,2,3,4])
.initial()
.last()
.value();
ce qui vous rend 3.
Ou dans la question initiale:
var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = _.chain(array_fragment).initial().last().value();
Si vous devez souvent accéder aux tableaux à l’inverse, et pas seulement à l’avant-dernier index, vous pouvez utiliser une simple extension du prototype.
Lors de l'extension d'un élément aussi grand et utilisé que le prototype Array, veillez à ne pas affecter son utilisation. Pour ce faire, assurez-vous que la propriété n'est pas énumérable afin que for in
ne s'étouffe nulle part ailleurs (certaines personnes et certaines bibliothèques utilisent for in
pour itérer des tableaux).
Object.defineProperty(Array.prototype, 'rev', {
enumerable: false,
value: function(index){
return this[this.length - 1 - index];
}
});
document.write([1,2,3,4,5,6].rev(1));
Et maintenant, vous pouvez utiliser l'indexation à base zéro en sens inverse.
var pg_url = array_fragment[array_fragment.length -2]
array_fragment n'est pas une variable jquery, c'est une vieille variable javascript, donc pas besoin de $ ()
const myArray: Array<string> = ['first', 'second', 'third'];
Diviser myArray par deuxième dernier élément.
const twoItemsFromEnd = myArray.slice(-2); //Outputs: ['second', 'third']
Ensuite
const secondLast = twoItemsFromEnd[0];
Ou:
const secondLast = (params.slice(-2))[0];
Ce qui suit fonctionne pour une chaîne avec nth parties 'url'.
var fragment = '/t/e/s/t/i/n/g/';
var fragment = '/t/';
Si le fragment est de longueur variable, vous avez besoin d'une solution qui fonctionne pour différentes tailles de fragment.
var fragment = '/news/article-1/';
var array_fragment = fragment.split('/');
Split sépare la chaîne de fragment où il trouve '/'. Split prend la valeur avant et après le caractère séparé. Dans ce cas, il n'y a rien avant la première barre ou après la dernière barre. Les valeurs vides sont ajoutées à array_fragment dans les première et dernière positions de tableau.
jQuery
var pg_url = $(array_fragment)[$(array_fragment).length - 2];
javascript
var pg_url = array_fragment[array_fragment.length - 2];
Comme vous pouvez le constater, jQuery n’est pas nécessaire pour cette solution.
Array_fragment.length - 2 compte la longueur du tableau_fragment et sélectionne le deuxième élément à partir de la fin. La dernière valeur est "" car Split ('/') a ajouté une valeur vide à la fin du tableau array_fragment.
Simplifié et tout mis en place:
var f = '/t/e/s/t/i/n/g/'.split('/');
f[f.length - 2]