programing

배열의 두 번째에서 마지막 항목을 얻습니까?

jooyons 2023. 11. 6. 21:48
반응형

배열의 두 번째에서 마지막 항목을 얻습니까?

배열에서 마지막 두 번째 항목을 가져오려면 어떻게 해야 합니까?

예를 들어.

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

반응형