HTML&CSS&Javascript/JS

[JS] 자바스크립트 배열의 slice()와 splice() 함수

킹우현 2023. 3. 13. 02:29

1) slice() 함수

slice() 함수는 배열로 부터 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용합니다.

 

첫번째 인자로 시작 인덱스(index), 두번째 인자로 종료 인덱스를 받으며, 시작 인덱스부터 종료 인덱스까지 값을 복사하여 반환합니다.

 

여기서 주의할 점은 첫번째 인자로 넘어온 시작 인덱스가 가리키는 값은 포함하지만, 두번째 인자로 넘어온 종료 인덱스가 가리키는 값은 포함하지 않는다는 것입니다.

 

첫번째 인자도 넘기지 않으면, 배열의 처음 값부터 마지막 값까지 전체를 복제해버리는 효과를 낼 수 있습니다.

두번째 인자를 넘기지 않으면, 시작 인덱스가 가리키는 값부터 배열의 마지막 값까지 모두 복사해줍니다.

 

slice() 함수는 밑에서 다룰 splice() 함수와 달리 아무리 많이 호출해도 원본 배열의 값은 절대 건드리지 않습니다. 따라서 원본 배열이 그대로 보존되야 하는 상황에서 매우 유용하게 사용됩니다. ⭐️

 

2) splice() 함수

splice() 함수는 배열로 부터 특정 범위를 삭제하거나 새로운 값을 추가 또는 기존 값을 대체할 수 있습니다.

 

첫번째 인자로 시작 인덱스(index), 두번째 인자로 몇 개의 값을 삭제할지, 그리고 세번째 인자부터는 추가할 값을 가변 인자로 넘길 수 있으며, 삭제된 값을 담고 있는 배열을 반환합니다.

 

splice() 함수를 사용할 때 가장 주의할 부분은 삭제된 값을 담고 있는 새로운 배열이 반환될 뿐만 아니라 원본 배열에도 변경이 가해진다는 점입니다.

따라서 의도치 않은 데이터 유실이나 변경으로 이어질 수 있으니 특히 데이터의 불변성(immutability)이 보장되어야 하는 프로그램을 작성할 때 주의하셔야 합니다.

 

3) slice() vs splice()

많은 자바스크립트 개발자들이 slice() 함수와 splice() 함수를 햇갈려하는 이유는 비단 이름이 비슷해서 뿐만 아니라 실제로 동일한 목적을 위해서 두 함수 중에 아무거나 사용해도 무방한 경우가 있기 때문입니다.

 

항상 같은 배열을 반환하는 slice() 함수와 달리 splice() 함수는 계속해서 원본 배열를 변경(제거)하기 때문에 동일한 인자로 여러 번 함수를 호출했을 때 매번 다른 배열이 반환되게 됩니다.

 

출처 : https://www.daleseo.com/js-array-slice-splice/

 

자바스크립트 배열의 slice()와 splice() 함수

Engineering Blog by Dale Seo

www.daleseo.com

 

 

 

'HTML&CSS&Javascript > JS' 카테고리의 다른 글

번들링(Bundling)이란 ?  (0) 2023.04.11
[Javascript] 변수의 Type(원시형과 참조형)  (0) 2023.03.22
[JS Deep Dive] 40. Event Part 2  (0) 2023.03.06
[JS Deep Dive] 40. Event  (0) 2023.03.01
[JS Deep Dive] 39. DOM  (0) 2023.03.01