Vraag Download het laatste item in een array


Hier is mijn JavaScript-code tot nu toe:

var linkElement = document.getElementById("BackButton");
var loc_array = document.location.href.split('/');
var newT = document.createTextNode(unescape(capWords(loc_array[loc_array.length-2]))); 
linkElement.appendChild(newT);

Momenteel neemt het het voorlaatste item in de array van de URL. Ik wil echter controleren of het laatste item in de array "index.html" is en als dat zo is, pak dan het derde tot laatste item.


697
2017-07-09 19:45


oorsprong


antwoorden:


if(loc_array[loc_array.length-1] == 'index.html'){
 //do something
}else{
 //something else.
}

In het geval dat uw server hetzelfde bestand voor "index.html" en "inDEX.htML" gebruikt, kunt u ook het volgende gebruiken: .toLowerCase().

Hoewel, u zou kunnen overwegen om deze serverkant te doen indien mogelijk: het zal schoner zijn en werken voor mensen zonder JS.


763
2017-07-09 19:48



Niet zeker of er een nadeel is, maar dit lijkt vrij beknopt:

arr.slice(-1)[0] 

of

arr.slice(-1).pop()

Beide keren terug undefined als de array leeg is.


599
2017-08-23 20:19



Gebruik Array.pop:

var lastItem = anArray.pop();

Belangrijk : Hiermee wordt het laatste element geretourneerd en  verwijdert het uit de array


160
2018-06-14 14:06



Een kortere versie van wat @chaiguy heeft gepost:

Array.prototype.last = function() {
    return this[this.length-1];
}

Het lezen van de -1 index returns undefined nu al.


112
2017-10-01 15:08



Twee opties zijn:

var last = arr[arr.length - 1]

of

var last = arr.slice(-1)[0]

De eerste is sneller, maar de laatste ziet er mooier uit

http://jsperf.com/slice-vs-length-1-arr


80
2018-01-07 21:57



Hier leest u hoe u het kunt krijgen zonder effect op de originele ARRAY

a = [1,2,5,6,1,874,98,"abc"];
a.length; //returns 8 elements

Als u pop () gebruikt, zal dit gebeuren wijzig uw array

a.pop();  // will return "abc" AND REMOVES IT from the array 
a.length; // returns 7

Maar je kunt dit gebruiken, zo is het geen effect op de originele array:

a.slice(-1).pop(); // will return "abc" won't do modify the array 
                   // because slice creates a new array object 
a.length;          // returns 8; no modification and you've got you last element 

55
2017-09-03 21:25



Ik gebruik het liever array.pop() dan indexen.

while(loc_array.pop()!= "index.html"){
}
var newT = document.createTextNode(unescape(capWords(loc_array[loc_array.length])));

op deze manier krijg je altijd het element voorafgaand aan index.html (mits je array index.html als een item heeft geïsoleerd). Notitie: Je zult echter de laatste elementen uit de array verliezen.


37
2018-02-24 18:39



Het laatste item van een array verkrijgen kan met behulp van de plak methode met negatieve waarden.

U kunt er meer over lezen hier aan de onderkant.

var fileName = loc_array.slice(-1)[0];
if(fileName.toLowerCase() == "index.html")
{
  //your code...
}

Het gebruik van pop () zal je array veranderen, wat niet altijd een goed idee is.


26
2018-02-12 09:13



De "schoonste" ES6-weg (IMO) zou zijn:

const foo = [1,2,3,4];
const bar = [...foo].pop();

Dit vermijdt het muteren van foo zoals pop zou hebben gedaan als we de spread-operator niet hadden gebruikt. Dat gezegd hebbende, vind ik het wel leuk foo.slice(-1)[0] oplossing ook.


26
2018-06-16 19:43



Als iemand het laatste element in één keer wil pakken, kan hij / zij het gebruiken Array#splice():

lastElement = document.location.href.split('/').splice(-1,1);

Hier is het niet nodig om de gesplitste elementen in een array op te slaan en vervolgens naar het laatste element te gaan. Als het verkrijgen van het laatste element het enige doel is, moet dit worden gebruikt.

Notitie: Hierdoor wordt de oorspronkelijke array gewijzigd door het laatste element te verwijderen. Denken aan splice(-1,1) als een pop() functie die het laatste element laat verschijnen.


18
2018-03-16 00:53