TypeScript 배열의 마지막 요소 액세스
TypeScript에서 배열의 마지막 요소에 액세스할 수 있는 표기법이 있습니까? 루비에서 나는 다음과 같이 말할 수 있다. 비슷한 거 있어요?
인덱스를 사용하여 배열 요소에 액세스할 수 있습니다. 배열의 마지막 요소에 대한 인덱스는 array-1의 길이가 됩니다(인덱스가 0 기반인 경우).
이거는 통할 거야.
var items: String[] = ["tom", "jeff", "sam"];
alert(items[items.length-1])
작동 중인 샘플입니다.
나중에 배열이 필요하지 않으면 다음을 사용할 수 있습니다
array.pop()
그러나 그것은 배열에서 요소를 제거한다!
팝업이 반환되므로 구현에서 이 문제를 해결해야 합니다.
항상 값이 있을 것으로 확신하는 경우 사용할 수 있습니다():
var poped = array.pop()
array.push(poped!);
다음은 아직 언급되지 않은 또 다른 방법이다:
items.slice(-1)[0]
여기 나처럼 이 질문을 늦게 찾는 사람들을 위한 옵션이 함께 요약되어 있다.
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]
이 전화가 더 자주 필요한 경우 다음을 글로벌하게 선언할 수 있습니다:
interface Array<T> {
last(): T | undefined;
}
if (!Array.prototype.last) {
Array.prototype.last = function () {
if (!this.length) {
return undefined;
}
return this[this.length - 1];
};
}
그럼 그냥 전화하면 돼
items.last()
나는 스택 오버플로우에 대한 나의 첫 번째 기여로 이것을 사용한다:
var items: String[] = ["tom", "jeff", "sam"];
const lastOne = [...items].pop();
참고: 를 스프레드 연산자 없이 사용하는 것과 달리, 이 방법은 원래 배열에서 마지막 요소를 제거하지 않습니다.
2021년 7월부터 브라우저는 다음과 같은 구문을 허용하는 어레이에 대한 방법을 지원하기 시작했다:
const arr: number[] = [1, 2, 3];
// shows 3
alert(arr.at(-1));
어느 시점에서 타입스크립트가 이것을 지원하기 시작할지 확실하지 않지만(아직은 나에게 효과가 없다) 곧 사용할 수 있을 것이라고 추측한다.
현재 사용 가능합니다
const arr = [1, 3, 6, 2];
console.log(...arr.slice(-1)); // 2
네가 이것을 할 수 있는 몇 가지 방법이 있다.
- 마지막 요소의 인덱스를 기준으로 합니다.
arr[arr.length - 1]
- 슬라이스 함수를 사용합니다. 이 함수는 배열의 값을 반환하므로 0'번째 인덱스에 액세스해야 합니다.
arr.slice(-1)[0]
- pop() 함수를 사용합니다. 이 방법은 배열의 마지막 요소를 가져와 제거해야 할 때 도움이 됩니다. 요소가 반환되고 마지막 요소가 원래 배열에서 제거됩니다.
arr.pop()
- at() 함수를 사용합니다. 참고: 이 기능은 ES22에서 도입되었으며 이전 버전에서는 작동하지 않습니다
arr.at(-1)
환경설정에 따라 이러한 방법 중 하나를 선택할 수 있습니다.
한 줄 스크립트 기능:
const last = <T>(arr: T[]): T | undefined => arr.at(-1);
이전 ES 버전을 사용하는 경우:
function last<T>(arr: T[]): T | undefined {
return arr[arr.length - 1];
}
모든 fns는 거의 같은 성능을 가지고 있다. 나는 당신이 가장 토종으로 사용하는 것을 추천한다.
let arry = [A, B, C, D, E, F];
let lastElement = arry.slice(-1);
console.log(lastElement);
답변은 F로 표시됩니다.
'개발하자' 카테고리의 다른 글
주피터 노트북 내부에서 pytest 테스트 기능 (0) | 2023.08.16 |
---|---|
Pycharm Jupyter 노트북 wsl: Jupyter 패키지가 설치되지 않았습니다 (0) | 2023.08.16 |
SPARK_HOME 환경 변수가 설정되어 있지만 주피터 노트북에는 표시되지 않습니다. (윈도우) (0) | 2023.08.15 |
Azure Static Web App - Terraform을 사용한 애플리케이션 설정 (0) | 2023.08.14 |
How to split cell in VSCode Jupyter Notebook? (0) | 2023.08.14 |