[javascript] 배열의 마지막 항목을 가져옵니다

지금까지 내 JavaScript 코드는 다음과 같습니다.

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);

현재 URL에서 배열의 두 번째 항목이 마지막 항목입니다. 그러나 배열의 마지막 항목이 있는지 확인하고 싶습니다. "index.html"그렇다면 세 번째 항목부터 마지막 ​​항목까지 가져옵니다.



답변

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

서버가 “index.html”및 “inDEX.htML”에 대해 동일한 파일을 제공하는 경우 다음을 사용할 수도 있습니다 .toLowerCase().

그러나 가능하면이 서버 측을 수행하는 것이 좋습니다. JS가없는 사람들에게는 더 깨끗하고 효과적입니다.


답변

단점이 있는지 확실하지 않지만 이것은 매우 간결한 것 같습니다.

arr.slice(-1)[0] 

또는

arr.slice(-1).pop()

undefined배열이 비어 있으면 둘 다 반환 됩니다.


답변

Array.pop 사용 :

var lastItem = anArray.pop();

중요 :이 마지막 요소를 반환 하고 제거 배열에서 그것을


답변

@chaiguy가 게시 한 것의 짧은 버전 :

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

-1 인덱스를 읽으면 undefined이미 반환 됩니다.

편집하다:

요즘 선호는 모듈을 사용하고 프로토 타입을 만지거나 전역 네임 스페이스를 사용하지 않는 것 같습니다.

export function last(array) {
    return array[array.length - 1];
}


답변

두 가지 옵션이 있습니다 :

var last = arr[arr.length - 1]

또는

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

전자는 더 빠르지 만 후자는 더 좋아 보인다

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


답변

원래 ARRAY에 영향을 미치지 않고 얻는 방법은 다음과 같습니다.

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

pop ()을 사용하면 배열수정됩니다.

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

그러나 이것을 사용 하면 원래 배열 에는 영향미치지 않습니다 .

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 


답변

“가장 깨끗한”ES6 방식 (IMO)은 다음과 같습니다.

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

이 피합니다는 돌연변이 foo로, .pop()겠습니까 있던 우리는 확산 연산자를 사용하지 않은 경우.
즉, 나는 foo.slice(-1)[0]해결책도 좋아 한다.