- 인수로 전달된 범위의 요소들을 복사하여 배열로 반환한다.
- 원본 배열은 변경되지 않는다.
- slice 메서드는 두개의 매개변수를 갖는다
var arr = [1, 2, 3];
console.log(arr.slice(0, 1)); // [1]
/* arr[0] 부터 arr[1] 이전까지 복사하여 반환한다. */
console.log(arr); // [1, 2, 3]
🧐 slice 메서드의 두번째 인수를 생략하면 첫 번째 인수로 전달받은 인덱스부터 모든 요소를 복사하여 배열로 반환한다.
const arr = [1, 2, 3];
console.log(arr.slice(1)); // [2, 3]
/* arr[1]부터 이후의 모든 요소를 복사하여 반환한다. */
🧐 slice 메서드의 첫 번째 인수가 음수인 경우 배열의 끝에서부터 요소를 복사하여 배열로 반환한다.
const arr = [1, 2, 3, 4];
console.log(arr.slice(-1)); // [4]
/* 배열의 끝에서부터 하나의 요소 4를 복사하여 반환한다. */
console.log(arr.slice(-2)) // [3, 4]
/* 배열의 끝에서부터 요소를 두개 복사하여 반환한다. */
🧐 slice 메서드의 인수를 모두 생략하면 원본 배열의 복사본을 생성하여 반환한다.
const arr = [1, 2, 3];
const copy = arr.slice();
console.log(copy); // [1, 2, 3]
console.log(arr === copy); // false
/* 이때 변수 copy는 얕은 복사를 통해 생성된다.
배열 요소의 참조값은 같지만 copy와 arr은 다른 객체이다. */