Toegang tot laatste element van een TypeScript-array

Is er een notatie om toegang te krijgen tot het laatste element van een array in TypeScript? In Ruby kan ik zeggen: array[-1]. Is er iets soortgelijks?


Antwoord 1, autoriteit 100%

Je hebt toegang tot de array-elementen via de index. De index voor het laatste element in de array is de lengte van array-1 (aangezien indexen op nul zijn gebaseerd).

Dit zou moeten werken.

var items: String[] = ["tom", "jeff", "sam"];
alert(items[items.length-1])

Hieris een werkend voorbeeld.


Antwoord 2, autoriteit 44%

Als je de array achteraf niet meer nodig hebt, kun je

array.pop()

Maar dat verwijdert het element uit de array!

De pop retourneert T | undefineddus daar moet je voor zorgen in je implementatie.

Als u zeker weet dat er altijd een waarde zal zijn, kunt u de niet-null assertion-operatorgebruiken (!):

    var poped = array.pop()
     array.push(poped!);

Antwoord 3, autoriteit 33%

Hier is een andere manier die nog niet is genoemd:

items.slice(-1)[0]

Antwoord 4, autoriteit 11%

Hier zijn de opties samen samengevat, voor iedereen die deze vraag laat vindt, zoals ik.

var myArray = [1,2,3,4,5,6];
// Fastest method, requires the array is in a variable
myArray[myArray.length - 1];
// Also very fast but it will remove the element from the array also, this may or may 
// not matter in your case.
myArray.pop();
// Slowest but very readable and doesn't require a variable
myArray.slice(-1)[0]

Antwoord 5, autoriteit 7%

Vanaf juli 2021 beginnen browsers de at()methode voor arrays die de volgende syntaxis mogelijk maakt:

const arr: number[] = [1, 2, 3];
// shows 3
alert(arr.at(-1)); 

Het is mij niet duidelijk op welk moment TypeScript dit gaat ondersteunen (het werkt nog niet voor mij), maar het zou binnenkort beschikbaar moeten zijn, vermoed ik.


Antwoord 6, autoriteit 6%

Als je deze oproep vaker nodig hebt, is het mogelijk om deze wereldwijd te declareren:

interface Array<T> {
    last(): T | undefined;
}
if (!Array.prototype.last) {
    Array.prototype.last = function () {
        if (!this.length) {
            return undefined;
        }
        return this[this.length - 1];
    };
}

dan kun je gewoon bellen

items.last()

Antwoord 7, autoriteit 4%

Ik ga met deze mee als mijn eerste bijdrage aan stackoverflow:

var items: String[] = ["tom", "jeff", "sam"];
const lastOne = [...items].pop();

OPMERKING: In tegenstelling tot het gebruik van pop()zonder de spread-operator, verwijdert deze benadering niet het laatste element uit de originele array.

Other episodes