개발공부_Blog/JavaScript

Array.prototype.slice() 배열에서 시작과 끝을 추출하는 함수

소팡팡 2022. 1. 15. 09:57

Array.prototype.slice()

slice() 메서드는 어떤 배열의 begin부터 end까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다.

원본 배열은 바뀌지 않습니다.

 

구문

arr.slice([begin[, end]])

 

예제

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(1, 4));
// expected output: Array ['bison', 'camel', 'duck']

console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]

console.log(animals.slice(-2));
// expected output: Array ["duck", "elephant"]

console.log(animals.slice(2, -1));
// expected output: Array ["camel", "duck"]

 

매개변수

begin 

0을 시작으로 하는 추출 시작점에 대한 인덱스를 의미합니다.

 

음수 인덱스는 배열의 끝에서부터의 길이를 나타냅니다. slice(-2) 는 배열에서 마지막 두 개의 엘리먼트를 추출합니다.

 

begin이 undefined인 경우에는,

0번 인덱스부터 slice 합니다.begin이 배열의 길이보다 큰 경우에는, 빈 배열을 반환합니다.

 

end 

추출을 종료 할 0 기준 인덱스입니다. slice  end 인덱스를 제외하고 추출합니다.

예를 들어, slice(1,4)는 두번째 요소부터 네번째 요소까지 (1, 2 및 3을 인덱스로 하는 요소) 추출합니다.

 

음수 인덱스는 배열의 끝에서부터의 길이를 나타냅니다.

예를들어 slice(2,-1) 는 세번째부터 끝에서 두번째 요소까지 추출합니다.

 

end가 생략되면 slice()는 배열의 끝까지(arr.length) 추출합니다.

만약 end 값이 배열의 길이보다 크다면, silce()는 배열의 끝까지(arr.length) 추출합니다.

 

반환 값

추출한 요소를 포함한 새로운 배열.

 

 

설명

slice()는 원본을 대체하지 않습니다. 원본 배열에서 요소의 얕은 복사본을 반환합니다.

  • 객체 참조(및 실제 객체가 아님)의 경우, slice()는 객체 참조를 새 배열로 복사합니다. 원본 배열과 새 배열은 모두 동일한 객체를 참조합니다. 참조 된 객체가 변경되면 변경 내용은 새 배열과 원래 배열 모두에서 볼 수 있습니다.
  •  
  • String  Number 객체가 아닌 문자열과 숫자의 경우 slice()는 문자열과 숫자를 새 배열에 복사합니다. 한 배열에서 문자열이나 숫자를 변경해도 다른 배열에는 영향을 주지 않습니다.