Array.prototype.slice
slice 메서드는 인수로 전달된 범위의 요소들을 복사하여 배열로 반환한다. 원본 배열은 변경되지 않는다. 이름이 유사한 splice 메서드는 원본 배열을 변경하므로 주의하자. slice 메서드는 첫 번째 인수(start)로 전달받은 인덱스 부터 두 번째 인수(end)로 전달받은 인덱스 이전(end 미포함)까지 요소들을 복사하여 배열로 반환한다. 두 번째 인수(end)를 생략하면 첫 번째 인수(start)로 전달받은 인덱스부터 모든 요소를 복사해 배열로 반환한다.
slice()
slice(start)
slice(start, end)
매개변수
- start (Optional) : 복사를 시작할 인덱스. 음수인 경우 배열의 끝에서의 인덱스를 나타낸다. 예를 들어, slice(-2)는 배열의 마지막 두 개의 요소를 복사하여 배열로 반환한다.
- end (Optional) : 복사를 종료할 인덱스. 이 인덱스에 해당하는 요소는 복사되지 않는다. end는 생략 가능하며 생략 시 기본값은 length 프로퍼티 값이다.
반환 값
복사한 요소를 포함하는 새 배열
예제
const arr = [1, 2, 3];
//arr[0]부터 arr[1] 이전(arr[1] 미포함)까지 복사하여 반환한다.
arr.slice(0, 1); // [1]
//arr[1]부터 arr[2] 이전(arr[2] 미포함)까지 복사하여 반환한다.
arr.slice(1, 2); // [2]
//원본은 변경되지 않는다.
console.log(arr); // [1, 2, 3]
const arr = [1, 2, 3];
//arr[1]부터 이후의 모든 요소를 복사하여 반환한다.
arr.slice(1); // [2, 3]
//배열의 끝에서부터 요소를 한 개 복사하여 반환한다.
arr.slice(-1); // [3]
//배열의 끝에서부터 요소를 두 개 복사하여 반환한다.
arr.slice(-2); // [2, 3]
//인수를 모두 생략하면 원본 배열의 복사본을 생성하여 반환한다.
const copy = arr.slice();
console.log(copy); //[1, 2, 3]
console.log(copy === arr); // false - 이때 생성된 복사본은 얕은 복사(shallow copy)를 통해 생성되기 때문. copy와 arr은 참조값이 다른 별개의 객체.
'JavaScript' 카테고리의 다른 글
[JavaScript] 문자열 자르기 (substr / substring / slice) (0) | 2023.06.28 |
---|---|
[JavaScript] 배열 합치기 3가지 방법 (0) | 2023.06.26 |
[JavaScript] 배열 sort 메서드 (0) | 2023.06.22 |
[JavaScript] 배열 map 메서드 (0) | 2023.06.21 |
[JavaScript] 배열 reduce 메서드 (0) | 2023.06.20 |