본문 바로가기

Javascript/tips

[JS] 배열에서 특정 요소 삭제하기

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