Problem

NodeJS에서 댓글 삭제 시, 해당 글에서 댓글의 정보를 담고 있는 배열에서도 해당 댓글을 삭제 하기 위해서 pop을 사용하였더니, 가장 최근에 작성된 댓글이 삭제되는 버그를 확인했다.

video.comments.pop(comment._id);

Scratch

pop() 메서드는 input에 상관 없이 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.

따라서 배열에 있는 특정 요소를 제거하고 싶을 경우, 반복문을 사용하여 인덱스를 순회하면서 해당 요소가 나왔을 경우, 해당 인덱스에 해당하는 요소를 splice() 메서드를 사용하여 제거하는 방법이 있다.

  for (let i = 0; i < video.comments.length; i++) {
    if (String(video.comments[i]) === String(comment._id)) {
      video.comments.splice(i, 1);
      i--;
    }
  }

 

'Javascript > tips' 카테고리의 다른 글

[JS] querySelectorAll 에 addEventListener 하기  (0) 2023.07.25

Problem

생성된 댓글 마다 삭제 버튼을 만드려고 video--comment--btn__delete 클래스에 해당하는 버튼마다 이벤트를 달아주려고 했더니 아래와 같은 에러가 발생하는 것을 확인했다.

const deleteBtn = document.querySelectorAll(".video--comment--btn__delete");

if (deleteBtn) {
  deleteBtn.addEventListener("click", handleDelete);
}

Scratch

querySelectorAll로 받은 결과를 console.log해보니, NodeList로 받는 것을 확인할 수 있었다.

NodeList안에 있는 요소를 반복문으로 하나하나 eventListener를 달아주면 된다!

if (deleteBtn) {
  deleteBtn.forEach((item) => {
    item.addEventListener("click", handleDelete);
  });
}

 

'Javascript > tips' 카테고리의 다른 글

[JS] 배열에서 특정 요소 삭제하기  (0) 2023.07.26

+ Recent posts