이것은.! slice 인가 splice 로 배열을 자르면 되는 것 아니던가 !
🎈 내가 생각한 방법
1. num1 부터 num2 까지만 도려내준다.
2. 반환한다 !
내가 알기로는 기존의 배열을 수정한다고 알고 있는데.. 배열에서 변화가 전혀 일어나지 않았다.
slice 의 두 번째 매개변수가 n 일 때, n 번째 값은 포함하지 않는다는 것을 보고 +1을 해주었다.
그리고도 안되길래 굉장히 혹시 몰라서 변수에 담아줘보았는데 바로 통과했다..
변수에 담는 것과 그렇지 않은 것의 차이가 무엇일까?
=> 아하 아래 정리하다가 알게 되었는데 slice 의 원본 배열은 바뀌지 않는다.
그래서 numbers 반환했을 때 원본이 나온것이다. 아하 나는 바보.
🎈 배열의 메서드 slice
slice() 메서드는 배열의 시작부터 끝까지 ( 끝 미포함 ) 에 대한 얕은 복사본을 새로운 배열 객체로 반환한다.
원본 배열은 바뀌지 않는다.
배열.slice(start,end)
총 2개의 매개변수를 가지며, 생략 가능하다.
start : 추출 시작점
- undefined 일 때 : 0부터 slice
- 음수일 때 : 배열의 끝에서부터 길이 ( -n 일 때 배열의 길이 - n 번째 인덱스부터 시작 )
- 배열의 길이와 같거나 큰 수일 때 : 빈 배열 반환
end : 추출 종료 ( end 전 까지의 요소만 추출 )
- 지정하지 않을 때 : 배열의 끝까지 slice
- 음수일 때 : 배열의 끝에서부터 길이 ( -n 일 때 배열의 길이 - n 번째 인덱스부터 시작 )
- 배열의 길이와 같거나 큰 수일 때 : 배열의 끝까지 추출
🎈 배열의 메서드 splice
splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다.
원본 배열 자체를 수정한다.
배열.splice ( start, deleteCount, newItem, newItem, newItem, ... )
총 n개의 매개변수를 가지며, 첫 번째 매개변수는 생략할 수 없다.
start : 요소 추가 및 변경 또는 삭제 시작점
- 음수일 때 : 배열의 끝에서부터 길이 ( -n 일 때 배열의 길이 - n 번째 인덱스부터 시작 )
- 값이 배열보다 클 때 : 0으로 설정
deleteCount : 제거할 요소의 갯수
- 생략하거나 배열의 길이 - 시작 위치보다 클 때 : 시작 위치부터 모든 요소 제거
- 0 이하일 때 : 어떠한 요소도 제거하지 않음
newItem ... : 배열에 추가할 요소
- 생략할 때 : 시작 위치부터 특정 개수만큼 배열의 요소를 제거