본문 바로가기
JS

JS, slice와 splice

by Hyeon_E 2023. 6. 10.

[ slice ]

slice는 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용

인자로 시작 인덱스(index), 종료 인덱스(index)를 받으며

시작 인덱스부터 종료 인덱스의 전까지 값을 복사하여 반환함(원본 배열은 바뀌지 않음)

즉 시작 인덱스가 가리키는 값은 포함하지만, 종료 인덱스가 가리키는 값은 포함하지 않는 다는 것

 

 -값을 넣는다면 뒤에서 부터 셈

시작 인덱스만 적는다면 시작 인덱스부터 배열의 마지막 인덱스까지 반환함

시작 인덱스도 인자로 주지 않으면 처음 값부터 마지막 값까지 전체를 복제

 

nums = Array(20).fill().map((_, i) => i)
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

nums.slice(-4)		//[ 16, 17, 18, 19 ]

nums.slice(5, 10)	//[5, 6, 7, 8, 9]

nums.slice(10)		//[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

nums.slice()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

 

[ splice ]

배열로 특정 범위를 삭제하거나 새로운 값을 추가 또는 기존 값을 대체하는데 사용

인자로 시작 인덱스(index), 몇개의 값을 삭제할지, 추가할 값을 가변 인자를 받으며

삭제된 값을 담고 있는 배열을 반환함. 즉 빼온 값은 기존의 배열에서 삭제됨

그렇기에 데이터의 불변성(immutability)이 보장되어야 하는 프로그램을 작성할 때 주의해야 함

 

첫번째 인자만 넘기면 해당 인덱스가 가리키는 값을 포함해서 마지막 값까지 삭제가 됨

 

nums = Array(20).fill().map((_, i) => i)
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

nums.splice(5, 3)	// [5, 6, 7]
nums
// [0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

원본 배열로 부터 3개의 값이 빠져나감

 

nums.splice(5, 0, -5, -6, -7)	// []
nums
// [0, 1, 2, 3, 4, -5, -6, -7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

삭제된 값이 없어 빈 배열이 반환되고, 추가한 값이 원본배열에 그대로 추가됨

 

nums.splice(10, 2, -10, -11)	//[10, 11]
nums
// [0, 1, 2, 3, 4, -5, -6, -7, 8, 9, -10, -11, 12, 13, 14, 15, 16, 17, 18, 19]

 

nums.splice(15)	//[15, 16, 17, 18, 19]
nums
// [0, 1, 2, 3, 4, -5, -6, -7, 8, 9, -10, -11, 12, 13, 14]

 

'JS' 카테고리의 다른 글

JS, readline 모듈을 이용해 입력값 받기  (0) 2023.06.15
JS, 호이스팅  (0) 2023.06.15
JS, Array의 min, max값 찾기  (0) 2023.06.05
JS, map & filter & reduce  (0) 2023.05.30
JS, 문자를 숫자로& 숫자를 문자로  (0) 2023.05.30

댓글