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

JavaScript로 배열에서 자릿수가 짝수인 숫자 찾기

정수 배열을 첫 번째이자 유일한 인수로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 원본 배열의 요소 중 자릿수(숫자의 개수)가 짝수인 값만 골라 새로운 배열을 만든 뒤 반환해야 합니다.

예를 들어, 입력 배열이 다음과 같다면 −

const arr = [12, 6, 123, 3457, 234, 2];

출력 결과는 다음과 같아야 합니다.

  • 12 → 자릿수 2개 (짝수) ✅
  • 6 → 자릿수 1개 (홀수) ❌
  • 123 → 자릿수 3개 (홀수) ❌
  • 3457 → 자릿수 4개 (짝수) ✅
  • 234 → 자릿수 3개 (홀수) ❌
  • 2 → 자릿수 1개 (홀수) ❌
const output = [12, 3457];

풀이 접근 방식

이 문제는 다음 단계로 해결할 수 있습니다.

  1. 배열을 순회하면서 각 요소를 확인합니다.
  2. Math.abs()를 사용해 음수일 경우에도 올바르게 처리할 수 있도록 절댓값으로 변환합니다.
  3. 숫자를 String()으로 문자열로 변환한 뒤, 문자열의 길이(자릿수)가 짝수인지 검사합니다.
  4. 자릿수가 짝수인 요소만 결과 배열에 추가합니다.

예제 코드

const arr = [12, 6, 123, 3457, 234, 2];

const findEvenDigitsNumber = (arr = []) => {
    const res = [];
    const { length: l } = arr;
    for(let i = 0; i < l; i++){
        const num = Math.abs(arr[i]);
        const numStr = String(num);
        if(numStr.length % 2 === 0){
            res.push(arr[i]);
        };
    };
    return res;
};

console.log(findEvenDigitsNumber(arr));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

[12, 3457]

코드 설명

Math.abs(arr[i])는 음수가 입력되더라도 마이너스 기호가 자릿수 계산에 영향을 주지 않도록 합니다. 이후 String(num)으로 숫자를 문자열로 변환하면 .length 속성으로 간단히 자릿수를 구할 수 있습니다. 길이를 2로 나눈 나머지가 0이라면 자릿수가 짝수이므로 해당 원래 값을 결과 배열에 push합니다.

참고로, 같은 로직을 filter 메서드를 사용해 더 간결하게 표현할 수도 있습니다.

const findEvenDigitsNumber = (arr = []) =>
    arr.filter(num => String(Math.abs(num)).length % 2 === 0);