arr.slice([begin[, end]])
begin : 0을 시작으로 하는 추출 시작점에 대한 인덱스
- undefined인 경우 : 0번 인덱스부터 slice
- 음수 인덱스인 경우 : 배열 끝에서부터의 길이. slice(-2) 는 배열에서 마지막 두 개의 엘리먼트를 추출한다.
- 배열의 길이와 같거나 길이보다 큰 경우 : 빈 배열을 반환
end : 추출을 종료 할 0 기준 인덱스. slice는 end인덱스를 제외하고 추출한다.
=>slice(1,4)는 두번째 요소부터 네번째 요소까지 (1, 2 , 3을 인덱스로 하는 요소) 추출
- 생략되었을 경우 : 배열 끝까지(arr.length) 추출
- 음수 인덱스인 경우 : 배열의 끝에서부터의 길이를 나타낸다. slice(2,-1) 는 세번째부터 끝에서 두번째 요소까지 추출.
- 배열의 길이와 같거나 길이보다 큰 경우 : silce()는 배열의 끝까지(arr.length) 추출.
반환값: 추출한 요소를 포함한 새로운 배열.
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
//2번 인덱스부터 끝까지 출력
console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]
//2번 인덱스부터 4-1인 3번 인덱스까지 출력
console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]
//1번 인덱스부터 4번인덱스까지 출력
console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]
//배열끝에서 마지막 2개 엘리먼트 출력
console.log(animals.slice(-2));
// expected output: Array ["duck", "elephant"]
//2번 인덱스부터 추출 시작하여 끝에서부터 -1번째인 'elephant'전까지 추출하므로 'duck'까지 출력
console.log(animals.slice(2, -1));
// expected output: Array ["camel", "duck"]
let arr= ["나는","철수","입니다"];
arr.splice(1,0,"대한민국","소방관")
//아무것도 지우지 않고 추가됨
console.log(arr);//["나는","대한민국","소방관","철수","입니다"]
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
start : 배열의 변경을 시작할 인덱스.
- 배열의 길이보다 큰 값 : 실제 시작 인덱스는 배열의 길이로 설정된다.
- 음수인 경우 : 배열의 끝에서부터 요소를 센다.
- 절대값이 배열의 길이보다 큰 경우 : 0으로 세팅
deleteCount : 배열에서 제거할 요소의 수
- 생략 또는 array.length-start보다 큰 경우 : start부터의 모든 요소를 제거한다.
- 0 이하의 수를 지정 : 어떤 요소도 제거되지 않는다.
item1, item2, ... : 배열에 추가할 요소
- 지정하지 않는 경우 : 요소 제거만 수행한다.
반환값 : 제거한 요소를 담은 배열
- 하나의 요소만 제거한 경우 길이가 1인 배열을 반환
- 아무값도 제거하지 않으면 빈 배열을 반환한다.
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum');
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum', 'guitar');
var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);
var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(-2, 1);
var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2);
✅정리
- slice메소드는 원본배열은 바뀌지 않고, 추출 시작 인덱스와 종료할 인덱스를 지정하여 추출한 요소를 포함한 새로운 배열로 반환한다.
- splice메소드는 원본배열 자체를 수정하며, 변경을 시작할 인덱스와 배열에서 제거할 요소의 수를 정하여 추가하고(추가는 생략 가능) 제거한 요소를 담은 배열을 반환한다.