본문 바로가기

개발하자

TypeScript 배열의 마지막 요소 액세스

반응형

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




네가 이것을 할 수 있는 몇 가지 방법이 있다.

  1. 마지막 요소의 인덱스를 기준으로 합니다.
arr[arr.length - 1]
  1. 슬라이스 함수를 사용합니다. 이 함수는 배열의 값을 반환하므로 0'번째 인덱스에 액세스해야 합니다.
arr.slice(-1)[0]
  1. pop() 함수를 사용합니다. 이 방법은 배열의 마지막 요소를 가져와 제거해야 할 때 도움이 됩니다. 요소가 반환되고 마지막 요소가 원래 배열에서 제거됩니다.
arr.pop()
  1. 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는 거의 같은 성능을 가지고 있다. 나는 당신이 가장 토종으로 사용하는 것을 추천한다.

enter image description here




let arry = [A, B, C, D, E, F];
let lastElement = arry.slice(-1);

console.log(lastElement);

답변은 F로 표시됩니다.


반응형