문제
정수와 문자열 형태의 숫자가 섞여 있는 배열을 인수로 받는 JavaScript 함수를 작성해야 합니다.
이 함수는 배열 안의 모든 정수와 문자열 숫자를 하나로 합산하여 새로운 숫자를 만든 뒤, 그 결과를 반환해야 합니다.
예시
다음은 해당 코드입니다 −
const arr = [67, 45, '34', '23', 4, 6, '6'];
const mixedSum = (arr = []) => {
let sum = 0;
for(let i = 0; i < arr.length; i++){
const el = arr[i];
sum += +el;
};
return sum;
};
console.log(mixedSum(arr));
출력
185
코드 설명
이 코드의 핵심은 단항 더하기 연산자(+)입니다. 문자열 앞에 +를 붙이면 해당 문자열이 숫자 타입으로 변환됩니다. 예를 들어 +'34'는 숫자 34가 되며, 이미 숫자인 요소에는 아무런 영향을 주지 않습니다. 따라서 반복문 안에서 각 요소에 +el을 적용해 모든 값을 숫자로 통일한 후 합산하면 됩니다.
대안: reduce() 메서드 활용하기
같은 결과를 reduce() 메서드를 사용해 더 간결하게 구현할 수도 있습니다.
const mixedSum = (arr = []) => arr.reduce((sum, el) => sum + +el, 0);
console.log(mixedSum(arr)); // 185
두 방법 모두 문자열과 숫자가 섞인 배열의 모든 요소를 안전하게 합산할 수 있으며, 상황에 따라 가독성이 좋은 방식을 선택해 사용하면 됩니다.