이번 과제는 계산기의 기능을 구현하는 과제였다.
여러 기능 중 나는 사칙연산 기호를 여러 번 눌렀을 때, 마지막으로 누른 사칙연산 기호만 작동하게 만들고자 한다.
떠오른 방법은
1. 하나의 배열을 만들고,
2. 클릭을 할 때마다 배열에 클릭을 한 요소가 추가 되게 하고
3. 그 배열의 요소 중 마지막 요소를 함수에 들어갈 변수에 할당해준다.
먼저 떠올린 방법은 push를 통해 추가하는 방법이었다. 하지만, 한 가지만 추가 됐고, 반복이 되지 않는 문제가 생겼다.
if (action === 'operator') {
if(previousKey === firstNum){
operatorForAdvanced = buttonContent;
previousKey = operatorForAdvanced;
}
let arr= [];
let openArr = arr.push(operatorForAdvanced)
console.log(openArr)
console.log(arr)
}
if(previousKey === operatorForAdvanced){
previousNum = firstNum;
}
그래서 떠올린 방법은 countOp를 하나 선언해주고, opreator 버튼이 눌릴때마다 countOp의 수가 올라가고,
그 countOp의 수를 기준으로 하여 for 문을 돌려보려 했다.
let countOp = 0;
if (action === 'operator') {
countOp++
if(previousKey === firstNum){
operatorForAdvanced = buttonContent;
previousKey = operatorForAdvanced;
}
let arr= [];
// 한가지만 들어가는데, for문을 쓴다? for문을 쓴다면, 변수는 어떤 걸로?
for(let i =0; i<countOp; i++){
let openArr = arr.push(operatorForAdvanced)
//
console.log(openArr)
console.log(arr)
}
if(previousKey === operatorForAdvanced){
previousNum = firstNum;
}
console.log를 찍어보니, 배열의 길이가 늘어나지만, 처음에 눌렀던 사칙연산만 배열의 요소로 추가되는 문제가 발생했다.
어떻게 해야 다른 사칙연산 기호가 들어갈까? 조건을 달아줘야 할까? 달아준다면, 어떤 조건을 넣어줘야 할까?
pm 2:41
pm 3:31
방법을 못찾겠따. 아직 내 실력으로 힘든 것일까...?
그럼에도 포기하지 않고, 계속 알아보는 중이다
pm 3:41
배열의 요소로 추가하는 방안이 아닌 다른 방안으로 해야될 것 같다. 아무리 고민해봐도 지금의 내 실력에서는 ㅠㅠㅠ 힘들 것 같다.
나중에 event로 발생한 요소들을 반복문을 통해 arr에 추가하는 방법을 찾아봐야겠다. 방법이 있을까?
pm 3:52
매우 간단하게 해결이 됐다.... 기존의 코드를 크게 변경하지 않고, 조건 하나만을 바꿔주면 되는 것이었다.
if (action === 'operator') {
if(previousKey === firstNum){
operatorForAdvanced = buttonContent;
previousKey = operatorForAdvanced;
}
if(previousKey !== firstNum){
// 만일 이전에 누른 키가 숫자가 아니라면,
operatorForAdvanced= buttonContent;
// 함수에 들어갈 사칙연산 변수에 버튼으로 누른 컨텐트를 할당하고
previousKey = operatorForAdvanced;
// 이전에 누른 키에 사칙연산 버튼을 다시 할당한다.
}
if(previousKey === operatorForAdvanced){
previousNum = firstNum;
}
}
이렇게 하면, 가장 마지막 연산 기호에 반응하여 계산이 실행된다.
비록 시간을 많이 소비하기는 했지만, 그래도 직접 해냈다는 것에 성취감이 생긴다. 그러면서 동시에 자괴감이 ㅠㅠㅠ
그래도 이런 삽질을 한 경험이 계속 늘어나면 그만큼 성장할 수 있는 것이라 생각한다.
'개발 R.I.P.' 카테고리의 다른 글
5/22 Dev.Feedback(React. class component vs function component) (0) | 2021.05.22 |
---|---|
5/20 Dev.Feedback(CLI 명령어 정리) (0) | 2021.05.20 |
5/18 Dev.Feedback (Scope) (0) | 2021.05.18 |
5/17 Dev.Feedback(CSS : Box) (0) | 2021.05.17 |
5/16 Dev.Feedback(이중For문 Break, 문자열에 적용되는 산술 연산자, 함수 선언식, 표현식 Hoisting 차이) (0) | 2021.05.16 |