지금까지 내 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
배열이 비어 있으면 둘 다 반환 됩니다.
답변
답변
@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]
전자는 더 빠르지 만 후자는 더 좋아 보인다
답변
원래 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]
해결책도 좋아 한다.