프로그래밍 언어/HTML,CSS,JS

JavaScript에서 배열 요소 삭제 - delete vs splice

Rateye 2021. 6. 22. 10:55
728x90
반응형
질문 : JavaScript에서 배열 요소 삭제 - delete vs splice

Array.splice 메서드를 사용하는 것과 반대로 배열 요소 에서 delete 연산자 를 사용하는 것의 차이점은 무엇입니까?

예를 들면 :

myArray = ['a', 'b', 'c', 'd'];

delete myArray[1];
//  or
myArray.splice (1, 1);

객체로 할 수있는 것처럼 배열 요소를 삭제할 수 있는데 왜 splice 방법이 있습니까?

답변

delete 는 객체 속성을 삭제하지만 배열을 다시 인덱싱하거나 길이를 업데이트하지 않습니다. 이렇게하면 정의되지 않은 것처럼 보입니다.

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> delete myArray[0]
  true
> myArray[0]
  undefined

실제로 값이 undefined 설정되어 있지 않고 배열에서 속성이 제거되어 정의되지 않은 것처럼 보입니다. Chrome 개발 도구는 배열을 로깅 할 때 empty 으로 인쇄하여 이러한 구분을 명확하게합니다.

> myArray[0]
  undefined
> myArray
  [empty, "b", "c", "d"]

myArray.splice(start, deleteCount) 실제로 요소를 제거하고 배열을 다시 색인화하며 길이를 변경합니다.

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> myArray.splice(0, 2)
  ["a", "b"]
> myArray
  ["c", "d"]
출처 : https://stackoverflow.com/questions/500606/deleting-array-elements-in-javascript-delete-vs-splice
728x90
반응형