181023 TIL Lec3 할일관리 step3

» 1막, TIL (Today I Learned)

할일관리 step3 수정

  • if문은 최대한 빨리 탈출할 수 있도록 로직 짜기
//수정 전
remove(id) {
    if (errorCheck.remove(id)) {

//수정 후 
remove(id) {
    if (!errorCheck.remove(id)) return;
  • for-of
자바스크립트에서 for-of를 쓸 수 있는 타입은 무엇인지 한번 찾아서 공부해두세요.

” The [for…of] creates a loop iterating over iterable objects (including the built-in String, Array, e.g. the Array-like arguments or NodeList objects, TypedArray, Map and Set, and user-defined iterables) “

  • for-of 안에서 if 대신 filter
// 수정 전
remove(id) {
    if (errorCheck.remove(id)) {
        for (const values of this.taskList) {
            if (values.id === id.id) {

// 수정 후
const taskToRemove = this.taskList.filter(values => values.id === id.id);
  • shift() 똑같은코드를 여러번 쓰는 것보다, while문 등으로 cacheList의 길이가 주어진 값(3)이 될때까지 반복적으로 shift호출하는 게 좀더 똑똑한 표현같아요.
// 수정 전
cacheListCheck(func, task) {
    if (this.cacheList.length > 5) {
        this.cacheList.shift();
        this.cacheList.shift();

// 수정 후 
fixArrLength(arr) {
    while (arr.length > 6) {
        arr.shift();
    }
} 
  • object.assign({})
undo나 redo를 통해 task의 값이 바뀌어도 처음에 입력한 데이터 값에 영향을 주지 않음
  • 중복 제거
// 수정 전
this.undoCacheList.pop();
this.undoCacheList.pop();

// 수정 후
    removeOldTask(arr) {
        arr.pop();
        arr.pop();
    },
  • for-if-if 중첩 제거
// 수정 전
undoUpdate(arg) {
    for (const values of todo.taskList) {

// 수정 후
const taskToUndoUpdate = todo.taskList.filter(values => values.id === arg.id);