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

JavaScript에서 배열 숫자의 제곱 및 제곱근 합계 구하기

문제

숫자로 이루어진 배열을 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열의 각 숫자를 확인하여 짝수이면 제곱하고, 홀수이면 제곱근을 구한 뒤, 변환된 모든 숫자의 합계를 소수점 둘째 자리까지 반올림하여 반환해야 합니다.

해결 접근 방식

  • 배열의 각 요소를 순회하며 나머지 연산자(%)를 사용해 짝수 여부를 판별합니다.
  • 짝수라면 자기 자신을 곱해 제곱하고, 홀수라면 Math.sqrt()로 제곱근을 구합니다.
  • reduce() 메서드를 사용해 변환된 모든 값을 하나의 합계로 누적합니다.

예제 코드

다음은 위 문제를 해결하는 코드입니다 −

const arr = [45, 2, 13, 5, 14, 1, 20];
const squareAndRootSum = (arr = []) => {
   const res = arr.map(el => {
      if(el % 2 === 0){
         return el * el;
      }else{
         return Math.sqrt(el);
      };
   });
   const sum = res.reduce((acc, val) => acc + val);
   return sum;
};
console.log(squareAndRootSum(arr));

출력

613.5498231854631

코드 설명

map() 메서드는 원본 배열을 변경하지 않으면서 각 요소를 새로운 값으로 변환한 배열을 반환합니다. 여기서는 짝수 판별 조건에 따라 제곱 또는 제곱근 결과를 담은 새 배열을 만듭니다.

reduce() 메서드는 배열의 각 요소를 순차적으로 순회하며 콜백 함수의 반환값을 누적합니다. 초기값 없이 호출되면 첫 번째 요소가 초깃값으로 사용되므로, 빈 배열이 들어오지 않도록 주의하는 것이 좋습니다.

소수점 둘째 자리까지 반올림하기

위 코드의 실행 결과는 긴 소수를 포함하고 있습니다. 문제에서 요구하는 대로 결과를 소수점 둘째 자리까지 반올림하려면 마지막 반환 부분을 다음과 같이 수정하면 됩니다.

return Number(sum.toFixed(2));

이렇게 하면 출력 결과가 613.55로 깔끔하게 정리됩니다. 문자열이 아닌 숫자 타입으로 유지하기 위해 Number()로 감싸주는 것이 좋습니다.