배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경하는 메서드
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
start
배열의 변경을 시작할 인덱스
배열의 길이보다 큰 값이라면
🧐 start > array.length ?
실제 시작 인덱스는 배열의 길이로 설정
🧐 start < 0 ?
배열의 끝에서부터 요소 count
ex) array.splice(-n) === array[array.length - n].
🧐 |start| > array.length ?
0으로 설정
deleteCount
(Optional)배열에서 제거할 요소의 개수
🧐 deleteCount > array.length - start or deleteCount 생략 ?
start부터의 모든 요소를 제거
🧐 deleteCount < 0 ?
어떤 요소도 제거하지 않지만 최소 하나의 새로운 요소 지정 필수!
item1, item2, <em>...</em>
(Optional)배열에 추가할 요소
아무 요소도 지정하지 않으면 splice()는 요소 제거만 수행!
Return
제거한 요소를 담은 배열을 return!
단, 하나의 요소만 제거한 경우 길이가 1인 배열을 return하고 아무 값도 제거하지 않았으면 빈 배열을 return
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// months[1]자리부터 0개를 삭제하고 'Feb'를 추가!
console.log(months); // ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// months[4]자리부터 1개를 삭제하고 ' May'를 추가!
console.log(months); // ["Jan", "Feb", "March", "April", "May"]
어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 return!
단, 원본 배열은 immutable
array.slice([begin[, end]])
begin
(Optional)0을 시작으로 하는 추출 시작점에 대한 인덱스
🧐 begin < 0?
배열의 끝에서부터의 길이
ex) slice(-2) 는 배열에서 마지막 두 개의 요소 추출
🧐 begin === undefined ?
0번 인덱스부터 slice!
🧐 begin > array.length ?
빈 배열 return
end
(Optional)추출을 종료 할 0 기준 인덱스로 end 인덱스를 제외하고 추출
ex) slice(1,4)는 인덱스 값이 1,2,3 인 요소를 추출
🧐end < 0 ?
배열의 끝에서부터의 길이를 나타냅니다.
ex)slice(2,-1) 는 세번째부터 끝에서 두번째 요소까지 추출
🧐end 생략?
slice()는 배열의 끝까지(arr.length) 추출
🧐만약 end > array.length ?
배열의 끝까지(array.length) 추출
Return
추출한 요소를 포함한 새로운 배열을 return!
let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
let citrus = fruits.slice(1, 3);
console.log("fruits : "+fruits);
// fruits : ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'] => 원 배열 불변!
console.log("citrus : "+citrus);
// citrus : ['Orange','Lemon']
정수 배열 numbers
와 정수 num1
, num2
가 매개변수로 주어질 때, numbers
의 num1
번 째 인덱스부터 num2
번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
numbers
의 길이 ≤ 30numbers
의 원소 ≤ 1,000num1
< num2
< numbers
의 길이numbers | num1 | num2 | result |
---|---|---|---|
[1, 2, 3, 4, 5] | 1 | 3 | [2, 3, 4] |
[1, 3, 5] | 1 | 2 | [3, 5] |
입출력 예 #1
입출력 예 #2
//풀이 1
const solution=(numbers, num1, num2)=>numbers.slice(num1,num2+1)
//풀이 2
const solution=(numbers, num1, num2)=>numbers.splice(num1, num2-num1+1);