배열의 두 번째에서 마지막 항목을 얻습니까?
배열에서 마지막 두 번째 항목을 가져오려면 어떻게 해야 합니까?
예를 들어.
var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = $(array_fragment).last()[0];
빈 값을 반환합니다.하지만 나는.article-1
감사해요.
모든 것이 jQuery를 사용해야 하는 것은 아닙니다.
일반적으로 오래된 자바스크립트에서는 다음과 같은 작업을 할 수 있습니다.
var pg_url = array_fragment[array_fragment.length - 2]
더 쉽고 빠르게 :)
자바스크립트의 것도 사용할 수 있을 것 같습니다.slice방법:
var path = 'a/b/c/d';
path.split('/').slice(-2, -1)[0]; // c
또한 " 배열의 두 번째부터 마지막 요소"를 "배열의 두 번째 요소가 반전됨"으로 생각할 수도 있습니다.
var path = 'a/b/c/d';
path.split('/').reverse()[1]; // c
arr.at(-2);배열에서 마지막 두 번째 항목을 반환합니다.
const arr = [1,2,3,4];
arr.at(-2); // Returns 3
그at()method는 양 또는 음의 정수를 취하여 해당 인덱스의 항목을 반환합니다.음의 정수는 배열의 마지막 항목에서 카운트백합니다.
브라우저에서 완벽하게 지원합니다.
문서: 배열/at
1단계: split() method를 사용하여 요소를 배열로 나눕니다.
var fragment_arr = fragment.split("/");
2단계: slice(-2) Method를 사용하여 배열에서 마지막 2개의 요소를 선택하고 배열의 끝에서 선택할 음수를 선택합니다.
var lastTwo = fragment_arr.slice(-2);
3단계:lastTwo배열은 다음의 두 요소를 포함합니다.fragment_arr, 이제 이렇게 접속할 수 있습니다.
var element = lastTwo[0];
alert(element);
단답 : 아래와 같이 2단계와 3단계를 조합할 수 있습니다.
var element = fragment_arr.slice(-2)[0];
alert(element);
이는 Lodash로 적용할 수 있습니다.
var fragment = '/news/article-1/'
var array_fragment = _.split(fragment, '/');
var second_last = _.nth(array_fragment, -2);
console.log(second_last);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
var pg_url = array_fragment[array_fragment.length -2]
array_fragment는 jquery 변수가 아니며, 단순한 오래된 자바스크립트 변수이므로 $($)가 필요 없습니다.
이 질문은 오래되었지만 여전히 관련이 있습니다.길이가 1인 슬라이스가 가장 좋으나 언더스코어/로대시의 대안으로 다음을 선택할 수 있습니다.
_.initial()은 마지막을 제외하고 모든 것을 갖습니다.
마지막 ()이 마지막을 갖습니다.
그래서 당신은 할 수 있습니다.
_.last(_.initial([1,2,3,4]))
또는 체인으로 연결됨:
_.chain([1,2,3,4])
.initial()
.last()
.value();
3을 돌려주는 거지
아니면 원래 질문에서:
var fragment = '/news/article-1/'
var array_fragment = fragment.split('/');
var pg_url = _.chain(array_fragment).initial().last().value();
두 번째부터 마지막 인덱스가 아니라 어레이에 역으로 액세스하는 것이 필요할 경우 프로토타입에 대한 간단한 확장을 사용할 수 있습니다.
Array 프로토타입과 같이 크기가 크고 사용되는 것을 확장할 때는 사용자가 다른 부분에 영향을 미치지 않도록 해야 합니다.이 작업은 속성이 열거할 수 없도록 함으로써 수행됩니다.for in다른 곳에서 질식하지 않을 것입니다(일부 사람들과 도서관들은 사용합니다).for in(배열을 반복합니다)
Object.defineProperty(Array.prototype, 'rev', {
enumerable: false,
value: function(index){
return this[this.length - 1 - index];
}
});
document.write([1,2,3,4,5,6].rev(1));
이제 제로 기반 인덱싱을 역으로 사용할 수 있습니다.
var a = [1,2,3,4];
var b = a.slice(-2,-1);
console.log(b);
정답은 [3] 입니다.슬라이스 시작과 끝만 언급하면 됩니다.
다음은 n번째 'url' 부분을 가진 문자열에 대해 작동합니다.
var fragment = '/t/e/s/t/i/n/g/';
var fragment = '/t/';
조각의 길이가 가변적인 경우 다양한 조각 크기에 적합한 솔루션이 필요합니다.
var fragment = '/news/article-1/';
var array_fragment = fragment.split('/');
split은 '/'s'를 찾을 때 fragment 문자열을 구분합니다.분할은 분할 문자 앞과 뒤의 값을 사용합니다.이 경우 첫 번째 슬래시 이전이나 마지막 슬래시 이후에는 아무것도 없습니다.빈 값은 처음 배열 위치와 마지막 배열 위치의 array_fragment에 추가됩니다.
jQuery
var pg_url = $(array_fragment)[$(array_fragment).length - 2];
javascript
var pg_url = array_fragment[array_fragment.length - 2];
보시다시피 jQuery는 이 솔루션에 필요하지 않습니다.
Array_fragment.length - 2는 array_fragment의 길이를 세고 끝에서 두 번째 항목을 선택하는 것입니다.마지막 값은 array_fragment 배열의 끝에 빈 값을 추가하는 분할('/')로 인해 ""입니다.
단순화되고 모든 것이 통합됨:
var f = '/t/e/s/t/i/n/g/'.split('/');
f[f.length - 2]
const myArray: Array<string> = ['first', 'second', 'third'];
내 배열을 두 번째 마지막 항목으로 나눕니다.
const twoItemsFromEnd = myArray.slice(-2); //Outputs: ['second', 'third']
그리고나서
const secondLast = twoItemsFromEnd[0];
또는:
const secondLast = (params.slice(-2))[0];
언급URL : https://stackoverflow.com/questions/6499012/get-the-second-to-last-item-of-an-array
'programing' 카테고리의 다른 글
| ASP에 개별 사용자 계정 인증 옵션이 없습니다.NET Core 웹 API 템플릿 (0) | 2023.11.06 |
|---|---|
| jQuery $(문서).준비() 두 번 발사 (0) | 2023.11.06 |
| Oracle이 Docker에서 작동하는지 확인하려면 어떻게 해야 합니까? (0) | 2023.11.06 |
| 이 오류는 무엇을 의미합니까? 'somefile.c:200: error: 1032바이트의 프레임 크기가 1024바이트보다 큽니다.' (0) | 2023.11.06 |
| 위조 방지를 해결하는 방법내 ASP에서 i가 재설정된 후 발생하는 토큰 예외.넷 MVC 앱? (0) | 2023.11.06 |