퍼블리싱/Javascript

array.slice()와 splice() 차이점에 대해 알아보자

xhakxh135 2023. 9. 14. 15:40
반응형
SMALL

slice(start[,end])  -> 새로운 객체를 배열로 반환한다. 원본 배열 수정 x 

 

start : 추출 시작점에 대한 인덱스

- undifined 일때 : 0부터 slice

- 음수 일때 : 배열 끝에서부터 시작 ex) -3이면 배열의 마지막 3개의 요소 추출

- 배열의 길이와 같거나 큰 수 : 빈 배열 반환

 

end : 추출을 종료할 기준의 인덱스, end를 제외하고 그 전까지 요소만 추출

- 지정하지 않을경우 : 배열 끝까지 slice

- 음수지정 : 배열끝부터 길이를 나타냄 ex) slice(2, -1)이면 세번째 부터 끝에서 두번째 요소까지 추출

- 배열의 길이와 같거나 큰수 : 배열 끝까지 추출 

const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 

array.slice(3,5) // index번호 3부터 4번까지 추출 [4,5]
array.slice(-3) // [8, 9, 10]
array.slice(-3, 9) // [8, 9]
array.slice(5, -4) // [6]
array.slice(2, 15); // [3,4,5,6,7,8,9,10]

 

 

 

 

splice(start[, deleteCount[, item[, item2], ...]]]) -> 배열의 기존 요소를 삭제, 교체 해서 원본 배열 자체를 수정한다.

 

 

start : 배열의 변경을 시작할 인덱스

- 음수 : 배열의 끝부터 요소 카운트

- 배열길이보다 큰 수 : 실제 시작 인덱스는 배열의 길이로 설정

 

deleteCount : 배열에서 제거할 요소의 수

- start부터 모든 요소를 제거

- 0이하의 수 : 제거 x

 

[, item[, item2], ...]]] : 배열에 추가할 요소

- 지정하지 않으면  splice는 요소 제거만 수행

var arr=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];

var arr1 = arr.splice(10, 2, 'a', 'b', 'c'); 

console.log(arr); // [1,2,3,4,5,6,7,8,9,10,'a','b','c'];
console.log(arr1); // [11,12]

//splice함수를 사용하면 원본 배열인 arr가 변경된다.
//10번째부터 2개의 요소를 삭제하고 abc추가,
//11,12가 삭제되고 삭제된 요소는 arr1에 담긴다.


----
var arr=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];

var arr1 = arr.splice(5, 0 ,'add'); 
console.log(arr); //[1,2,3,4,5,'add',6,7,8,9,10,11,12]
console.log(arr1); //[]
//deleteCount가 0보다 작은 수 이면 어떤 요소도 삭제 되지 않음
//arr1은 빈 배열 반환

 

 

반응형
LIST