-
[20221111] 자바스크립트 혼공스 함수 연습문제 (feat. 항해99 프리온보딩 5일차)TIL 2022. 11. 11. 18:38
1. A부터 B까지 범위를 지정했을 때 범위 안의 숫자를 모두 곱하는 함수 만들기 (p218, 1번)
function apple(a, b) { let output = a for (let i = a; i <= b; i++) { output *= i } return output } console.log(apple(1, 3))
2. 최대값을 찾는 max() 함수 만들기 (p218, 2번)
case 1. 매개변수로 배열을 받는 경우 : 배열로 받았기 때문에 배열의 첫번째 요소부터 반복하여 비교한다.
function max(array) { let output = array[0] for (const item of array) { if (output < item) { output = item } } return output } console.log(max([1, 2, 3, 4])) // 출력 결과: 4
case 2. 매개변수로 숫자를 받는 경우 : 숫자로 받았기 때문에 나머지 매개변수를 활용하여 배열로 바꾼다음 배열의 첫번째 요소부터 반복하여 비교한다.
function max(...array) { let output = array[0] for (const item of array) { if (output < item) { output = item } } return output } console.log(max(1, 2, 3, 4)) // 출력 결과: 4
case 3. 배열과 숫자 형태 모두 입력할 수 있는 경우 : 배열이 올 수도 숫자가 올 수도 있기에, 배열이 오는 경우와 숫자가 오는 경우로 구분하여 처리한다. 배열인 경우 배열의 첫번째 요소와 배열 자체를 비교대상으로 놓고, 숫자인 경우 맨 처음 숫자를 첫번째 요소로 놓고, 나머지 매개변수를 통해 받은 배열을 비교대상으로 놓는다. 이렇게 되면 비교할 첫번째 요소와 하나씩 반복하여 비교할 배열이 결정되므로 이전에 하였던 방식대로 for문을 사용하여 최대값을 찾는다.
function max(first, ...array) { if (Array.isArray(first)) { output = first[0] items = first } else if (typeof(first) === 'number') { output = first items = array } for (const item of items) { if (output < item) { output = item } } return output } console.log(max(1, 2, 3, 4)) // 출력 결과: 4
비교할 첫번째 요소와 하나씩 반복하여 비교할 배열만 경우에 따라 달라지고, 이것이 결정되면 비교하는 알고리즘은 똑같기 때문에 같은 부분은 굳이 경우에 따라 2번씩 쓰지 않고 따로 빼서 처리하는 것이 중요하다는 것을 알게 되었다.
'TIL' 카테고리의 다른 글
[20221125] 항해99 주특기 리액트 첫날🍁(feat. 코딩애플 리액트 강의) (0) 2022.11.25 [20221112] 자바스크립트 함수에 대한 고찰 (feat. 항해99 프리온보딩 6일차) (0) 2022.11.12 [20221110] 자바스크립트 혼공스 반복문 연습문제 (항해99 프리온보딩 4일차) (0) 2022.11.10 [20221108] 자바스크립트 if, switch 조건문 (feat. 항해99 프리온보딩 2일차) (2) 2022.11.07 [20221107] 자바스크립트 기초 문법 (feat. 항해99 프리온보딩 1일차) (0) 2022.11.07