181007 TIL Lec3 할일관리 step1

» 1막, TIL (Today I Learned)

할일관리 step1

  • 미루고 미루던 step1을 시도해보았다. 토요일에 봤는데, 도대체 무슨 말인지 전-혀 이해가 가지 않아서 멍하니 쳐다보고 끄적거려보다가 ‘내일은 생각이 나겠지’ 하고 슬픈 마음으로 잠들었다. image

  • 일요일 오전에도 역시나 생각이 나질 않아 고민하다가 낮잠 한번 때리고(?) 나가서 떡볶이를 먹고 저녁에 뙇 앉았는데, 갑자기 뭔가 홀린듯 술술 써졌다!

  • draft지만 일단 구현은 된당…? 그러니 PR을 날려본다..!!

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

    update(idAndStatus) {
        idAndStatus.nextstatus = idAndStatus.nextstatus.toLowerCase();
        const taskToUpdate = taskList.find(idAndStatus => idAndStatus.id === this.id);
        const before = taskToUpdate.status;
        const after = idAndStatus.nextstatus;
        taskToUpdate.status = after;
        statusList.splice(statusList.indexOf(taskToUpdate), 1);
        statusList.push(after);
        const [todo, doing, done] = this.findStatus(statusList);
        console.log(`id : ${taskToUpdate.id}, "${taskToUpdate.name}" 항목이 (${before} => ${after}) 상태로 업데이트되었습니다. 
현재 상태 - todo: ${todo}개, doing: ${doing}개, done: ${done}개`);
    },

    remove(id) {
        const taskToRemove = taskList.find(id => id.id === id.id);
        console.log(`id : ${id.id}, "${taskToRemove.name}" 삭제 완료.`);
        taskList.splice(taskList.indexOf(taskToRemove), 1);
        statusList.splice(statusList.indexOf(taskToRemove), 1);
        idList.splice(idList.indexOf(taskToRemove), 1);
    },

    findStatus(statusList) {
        let todo = 0;
        let doing = 0;
        let done = 0;
        for (i = 0; i < statusList.length; i++) {
            if(statusList[i] === 'todo'){
                todo++;
            } else if(statusList[i] === 'doing'){
                doing++;
            } else if (statusList[i] === 'done'){
                done++;
            }
        }
        return [todo, doing, done];
    }
}

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

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

todo.update({
    id: 2,
    nextstatus: "DOING"
});

todo.remove({
    id: 1
});

알고리즘 문제풀이

문제: 프로그래머스 풀이: 직사각형 별찍기

문제: 프로그래머스 풀이: 정수 내림차순으로 배치하기

문제: 프로그래머스 풀이: 문자열 내 마음대로 정리하기 <– 미완성.. 될거 같은데 안된당…ㅠㅠ


10/8 to-do

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