181008 TIL Lec3 할일관리 step1

» 1막, TIL (Today I Learned)

할일관리 step1

  • 오전에 오자마자 PR을 날리고, 오후에 피드백을 받았다. 전역 변수는 다 없애고 객체 안에서 작동하도록 수정.
  • 이미 taskList에 있는 속성(status, id)들을 또 다시 배열을 만들어서 쓰면 나중에 꼬일 가능성이 있어 위험! taskList에서 직접 끌어쓰도록 수정!

[수정 버젼]

const todo = {
    taskList: [],
    add(task) {
        task.status = 'todo';
        task.id = new Date().getUTCMilliseconds();
        this.taskList.push(task);
        let [todo, doing, done] = this.findStatus();
        console.log(`id : ${task.id}, "${task.name}" 항목이 새로 추가되었습니다.
현재 상태 - todo: ${todo}개, doing: ${doing}개, done: ${done}개 `);
    },

    update(idAndStatus) {
        for (const values of this.taskList) {
            if (values.id === idAndStatus.id) {
                idAndStatus.nextstatus = idAndStatus.nextstatus.toLowerCase();
                console.log(
`id : ${values.id}, "${values.name}" 항목이 (${values.status} => ${idAndStatus.nextstatus}) 상태로 업데이트되었습니다.`);
                values.status = idAndStatus.nextstatus;
                let [todo, doing, done] = this.findStatus();
                console.log(`현재 상태 - todo: ${todo}개, doing: ${doing}개, done: ${done}개`);
            }
        }
    },

    remove(id) {
        for (const values of this.taskList) {
            if (values.id === id.id) {
                console.log(`id : ${id.id}, "${values.name}" 삭제 완료.`);
                this.taskList.splice(this.taskList.indexOf(values), 1);
            }
        }
    },

    findStatus() {
        let [todo, doing, done] = [0, 0, 0];
        for (const values of this.taskList) {
            if (values.status === 'todo') {
                todo++;
            }
            if (values.status === 'doing') {
                doing++;
            }
            if (values.status === 'done') {
                done++;
            }
        }
        return [todo, doing, done];
    }
}

//test
todo.add({
    name: "자바스크립트 공부하기",
    tag: "programming"
});

todo.add({
    name: "자바스크립트 공부하기2",
    tag: "programming"
});

todo.update({
    id: todo.taskList[0].id,
    nextstatus: "DOING"
});

todo.remove({
    id: todo.taskList[0].id,
});
  • id를 원래는 차례차례 부여받는 방식으로 했는데, 객체마다 unique한 고유 id를 부여받도록 했다. -> 데이터 입력 받는 시간을 이용!
task.id = new Date().getUTCMilliseconds();

참고

  • 저녁에 수정해서 PR을 또 날렸으니 만족!


알고리즘


일기

오늘 왜인지 기운도 없고 기분이 좋지 않다.
이게 노멀인건가ㅋ 요새 너무 기분이 high했어서 상대적으로 쳐지게 느껴지는 것일까. 
자고 나면 괜찮겠지.

모니터 받침대가 도착했다. 조립하는 게 생각보다 복잡해서 고맙게도 달리와 코코아가 도와주었다. 수요일엔 모니터가 도착할 것이고, 바보같이 HDMI 선은 집으로 시켜서 목요일에나 써볼 듯 하다. 


10/8 to-do

  1. Lecture 3 step 1 PR
  2. prototype, 객체 강의
  3. 알고리즘 1문제 & 문자열 해결
  4. 객체 탐험