Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 배열 요소의 마지막 n자리만 추출하는 방법

다음과 같은 숫자 리터럴 배열이 있다고 가정해 보겠습니다.

const arr = [56768, 5465, 5467, 3, 878, 878, 34435, 78799];

여기서 우리는 이 배열과 숫자 n을 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 각 요소의 자릿수가 n 이상이면 마지막 n자리만 남기고, n 미만이라면 해당 요소를 그대로 반환해야 합니다.

예를 들어 n = 2라고 하면, 위 배열에 대한 출력 결과는 다음과 같습니다.

const output = [68, 65, 67, 3, 78, 78, 35, 99];

구현 예제

다음은 이 문제를 해결하는 전체 코드입니다.

const arr = [56768, 5465, 5467, 3, 878, 878, 34435, 78799];
const splitLast = (arr, num) => {
    return arr.map(el => {
        if(String(el).length <= num){
            return el;
        };
        const part = String(el).substr(String(el).length - num, num);
        return +part || part;
    });
};
console.log(splitLast(arr, 2));

코드 설명

이 코드의 동작 원리를 단계별로 살펴보겠습니다.

  • map() 메서드: 배열의 모든 요소를 순회하면서 각 요소를 변환한 새로운 배열을 반환합니다. 원본 배열은 변경되지 않습니다.
  • String(el): 숫자를 문자열로 변환하여 length 속성으로 자릿수를 확인할 수 있게 합니다.
  • 자릿수 검사: 요소의 길이가 num보다 작거나 같으면 변환 없이 원래 값을 그대로 반환합니다.
  • substr(): 문자열 끝에서 num개의 문자를 추출합니다. 시작 인덱스는 (문자열 길이 − num)입니다.
  • +part || part: 추출한 문자열을 숫자로 변환하되, 변환 결과가 0처럼 falsy한 값이면 원본 문자열을 그대로 유지합니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

[
    68, 65, 67,  3,
    78, 78, 35, 99
]

참고: 최신 JavaScript 환경에서는 substr() 대신 slice() 메서드를 사용하는 것이 권장됩니다. String(el).slice(-num)을 사용하면 음수 인덱스로 뒤에서부터 문자를 잘라내므로 더 간결하게 동일한 결과를 얻을 수 있습니다.