나만보는개발공부블로그

Splice() 본문

Javascript&Typescript

Splice()

alexrider94 2021. 6. 17. 21:52

splice(start, deleteCount, item1, item2, item3, etc.)

- start : 시작 인덱스, 만약 배열 크기보다 크면 배열의 크기에서 시작됨, 음수인 경우 배열의 끝에서부터 요소를 세어나간다.

- deleteCount: 시작 인덱스부터 삭제할 갯수

- item1, item2,... : 시작 인덱스에 넣을 아이템 요소값

 

 

- splice()는 배열의 요소 순서를 유지시키기 위해 제거시키는 요소가 생성 된 구간(구멍?)이 끝까지 이동되고 배열 크기를 조정하여 제거 할 수있을 때까지 요소의 절반을 계속 이동시키게 된다. 

- splice()는 linear time(선형 시간)을 따른다.

 

https://262.ecma-international.org/6.0/#sec-array.prototype.splice

 

ECMAScript 2015 Language Specification – ECMA-262 6th Edition

5.1.1 Context-Free Grammars A context-free grammar consists of a number of productions. Each production has an abstract symbol called a nonterminal as its left-hand side, and a sequence of zero or more nonterminal and terminal symbols as its right-hand sid

262.ecma-international.org

 

가끔식 splice함수를 백준문제에 활용하면 시간초과가 나게되는데 pop()함수보다 Array의 prototype인 splice()함수가 느린 이유?

 

배열의 pop()함수는 마지막 요소만 삭제하게 되는 constant time을 가지는데 splice()의 경우 배열의 순서를 지키면서 작동하기 때문에 더 오래걸린다.

500000의 길이의 array가 있을때 splice()는 삭제된 요소를 제외한 전체요소를 반환하고 하나의 요소를 지울 때 나머지 499999요소를 새 배열에 복사한다. 그러나 pop()은 한 요소를 줄이는걸로 끝난다.

 

 

'Javascript&Typescript' 카테고리의 다른 글

How to use map or forEach ES6 with async and await.  (0) 2022.09.17
함수형 컴포넌트의 제너릭 타입 설정.  (0) 2021.12.04
Shallow Copy & deep Copy  (0) 2021.03.23
Hoisting  (0) 2021.03.04
Iterable & Iterator  (0) 2021.02.23