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 | undefined
dus 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.