두 번째 과제는 가격 별 상품 추천하는 프로그램을 구현하는 것이었다. 사용자가 가지고 있는 돈의 액수를 입력받아 해당 금액에 가장 근접한 가격의 상품을 리턴하면 된다.
초반에 작성한 코드는 다음과 같다
[실제 본인 구현부]
// 아래에 getItemByAmount 함수를 작성하세요.
const getItemByAmount = (data, amount) => {
// 사용자의 입력 유효값 범위 지정: 숫자가 아닌 경우, 0인 경우 null
if(amount === false || amount === 0) {
return null;
}
// 살 수 있는 상품을 저장하기 위한 변수
let index;
for(let i=0; i<data.length; i++) {
// 조건: 사용자가 입력한 금액보다 상품의 가격이 더 비싼 경우
if(amount < data[i].price) {
// continue: 해당 항목을 제외하고 그 다음 항목과 비교하기 위함
continue;
} else {
// 그 외의 경우 사용자가 상품을 살 수 있기 때문에 해당 상품의 인덱스 번호가 저장됨
index = i;
}
}
// 상품이 존재한다면 해당 상품의 데이터를 출력하고, 그게 아니라면 null을 출력
return index != null ? data[index] : null;
};
코드에 대한 리뷰어님께서 조언해주신 내용은 다음과 같다.
- let 키워드 대신 const 사용하기
- for문보다는 foreach, filter와 같은 함수 사용하기
아쉬웠던 점
함수 사용에 소극적이었던 것이 너무 아쉽다. 다음 번 기능을 구현할 때에는 적절한 함수가 있는지 찾아가며 적극 활용할 수 있도록 해봐야겠다.
팀원들과 공유하며 알게된 점
- 확실히 함수를 적극적으로 사용하면 코드가 간결해진다.
[팀원 분의 코드]
function getItemByAmount(amount) {
const targetItem = data
.filter((item) => amount - item.price >= 0)
.sort((a, b) => b.price - a.price);
return targetItem ? targetItem[0] : null;
잘한 점
- return 값 사용 시 삼항 연산자를 활용하였다.
'개발회고📚' 카테고리의 다른 글
2022년, 지난 날의 회고 (0) | 2023.02.12 |
---|---|
[패스트캠퍼스] Rubber duck debugging : 첫 번째 (0) | 2021.07.30 |