230607 자바스크립트 타입을 고려해 sum() 함수 만들기
reduce()로 만들기
가장 간단하게 만들 수 있는 함수지만, 문자열이나 다른 값에 대한 예외 처리가 존재하지 않는다.
const sum = (array) => array.reduce((acc,cur)=> acc+cur,0)
sum([1,2,3,4,5]) // 15
lodash의 sum()함수
lodash에서의 sum 구현 코드는 배열의 길이와 while문을 사용하여 모두 더한다.
if문을 통해 undefined를
code 정보: https://github.com/lodash/lodash/blob/4.17.15/lodash.js#L16487
const identity = (value) => value
function baseSum(array, iteratee) {
var result,
index = -1,
length = array.length;
while (++index < length) {
var current = iteratee(array[index]);
if (current !== undefined) {
result = result === undefined ? current : (result + current);
}
}
return result;
}
function sum(array) {
return (array && array.length)
? baseSum(array, identity)
: 0;
}
타입스크립트와 typeof를 사용한 sum 함수
이 함수는 숫자로 변환 가능한 문자열일 경우 변환된 숫자 값을 더한다.
function sum(numbers: number[]):number {
let result = 0;
for(const x of numbers) {
if(typeof x === 'number') result += x;
else if (typeof x === 'string') {
const parsedNumber = parseFloat(x);
if(!isNaN(parsedNumber)) {
result += parsedNumber;
}
}
}
return result;
}
// sum([10, 20, 30, 40, 50, '10']) => 160
// 이 코드는 컴파일 단계에서는 타입스크립트로 인해 오류 발생
'내일배움캠프' 카테고리의 다른 글
230609 git rebase (1) | 2023.06.09 |
---|---|
230608 youtube iframe player api 볼륨 값 localStorage에 저장하고 불러오기 (0) | 2023.06.08 |
230606 자바스크립트 random() 대안으로 getRandomValues() (0) | 2023.06.06 |
230605 타입스크립트 클래스 (0) | 2023.06.05 |
230604 내일배움캠프 3주차 WIL (0) | 2023.06.04 |