공부기록/[강의노트] 바닐라 JS로 크롬 앱 만들기
바닐라 JS로 크롬 앱 만들기 #7.7~#7.8
Jenner
2022. 4. 22. 00:26
#7.7 Deleting To Dos part Two
Delete 하기 위해 paintToDo를 제대로 이해하자.
const numbers = [{text:"1", id:123345}, {text:"2", id:152242}]
function niceFilter () {true}
numbers.filter(niceFilter)
filter함수로 array에서 원하지 않는 object를 제외한다.
만약 해당 함수의 값이 true라면 filter함수를 통해 출력된다.
만약 해당 함수의 값이 false라면 filter함수를 통해 출력되지 않고 제외된다.
이렇게 되면 출력값은 아래와 같다.
0: {text:"1", id:123345}
1: {text:"2", id:152242}
function niceFilter가 true이므로
numbers.filter(niceFiter)는 모든 array값을 새로이 출력한다.
#7.8 Deleting To Dos part Three
filter function은 원래 가지고 있던 array값을 가져오지 않는다.
새로운 array를 주는 것이다.
const arr = [1, 2, 3, 4]
const newArr = arr.filter(item => item > 2)
arr
출력값은 [1, 2, 3, 4]
그러므로 deleteToDo 함수에 삭제한 것을 빼는 기능을 넣고 싶으므로
ToDos = ToDos.filter(ToDo => ToDo.id !== li.id);
함수를 추가해 준다. 그러면 ToDos에는 li.id가 아닌 것만 추가가 된다.
그런데 문제는 li.id의 타입을 보면 string이다.
console.log(typeof li.id)하면 알 수 있다.
그러므로 li.id의 타입을 바꿔주기 위해 parseInt 함수를 쓴다.
ToDos = ToDos.filter(ToDo => ToDo.id !== parseInt(li.id));
그 다음에
savedToDos를 다시 호출해 줘야 한다.
function deleteToDo(event) {
const li = event.target.parentElement;
li.remove();
ToDos = ToDos.filter(ToDo => ToDo.id !== parseInt(li.id));
savedToDos();
}
수정 완성 된 함수.
이제 원하는 대로 local storage에 저장되어 있는 것을 화면에서 삭제를 누른다면 삭제가 된다.