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

JavaScript로 혼합 데이터 유형 배열의 평균값 구하기

JavaScript에서는 숫자와 문자열이 섞여 있는 배열을 다루는 경우가 종종 있습니다. 예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.

const arr = [1,2,3,4,5,"4","12","2",6,7,"4",3,"2"];

이때 우리가 작성해야 할 함수는 이러한 배열을 입력받아, 숫자이거나 숫자로 완전히 또는 부분적으로 변환될 수 있는 요소들만 골라 그 평균값을 반환하는 것입니다.

예를 들어 "3454fdf" 같은 문자열은 문제의 배열에 포함되어 있지 않지만, 만약 포함되어 있었다면 parseInt가 앞부분의 숫자만 추출하여 3454를 평균 계산에 반영했을 것입니다.

해결 방법

핵심 아이디어는 간단합니다. 배열을 순회하면서 각 요소에 parseInt()를 적용하고, 그 결과가 유효한 숫자일 때만 합계와 개수에 포함하는 것입니다. 전체 코드는 다음과 같습니다.

const arr = [1,2,3,4,5,"4","12","2",6,7,"4",3,"2"];
const calculateAverage = arr => {
    let sum = 0, count = 0;
    for(let i = 0; i < arr.length; i++){
        const val = parseInt(arr[i]);
        if(val){
            sum += val;
            count++;
        };
    };
    return (sum / count);
};
console.log(calculateAverage(arr));

실행 결과

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

4.230769230769231

코드 설명

  • parseInt(arr[i]): 각 요소를 정수로 변환합니다. 문자열 "12"는 12로 변환되고, 숫자 5는 그대로 5가 됩니다.
  • if(val): 변환 결과가 NaN(숫자가 아님)인 경우 falsy 값으로 평가되어 합계와 개수에서 제외됩니다.
  • sum / count: 유효한 요소들의 합을 개수로 나누어 평균을 계산합니다.

참고로 소수점 처리가 필요하다면 parseFloat()을 사용하거나, 결과를 toFixed()로 반올림할 수도 있습니다. 또한 최신 JavaScript에서는 filter()reduce()를 조합해 더 간결하게 같은 로직을 구현할 수 있습니다.