일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- react
- CORS
- state
- 프리온보딩
- 컴포넌트
- 파이어베이스
- axios
- 자바스크립트
- 알고리즘
- TypeScript
- es6
- 프론트엔드
- 원티드
- Redux
- firebase
- react localStorage
- array
- 비트 연산자
- 프로그래머스
- 타입스크립트
- JS
- til
- Reducer
- JavaScript
- Component
- 리액트
- Frontend
- 브라우저
- v9
- localstorage
- Today
- Total
도리쓰에러쓰
[JavaScript] splice()와 slice()란? 메서드의 차이점? 본문
splice()와 slice() 메서드는 이름이 비슷해서 매일 헷갈리는 메서드 중 하나여서 글로 정리해보고자 한다.
우선 어떻게 사용하는지 알아보자.
1️⃣ splice()
사용 방법: arr.splice(start, deleteCount, items);
- start: 배열의 변경을 시작할 index, 음수인 경우 배열 끝에서 시작한다.
- deleteCount[option]: 배열 요소를 삭제할 갯수, 0이나 값을 작성하지 않은 경우 요소를 삭제하지 않으며, 값이 arr.length - start 보다 많은 경우 start부터 모든 요소를 제거한다.
- items[option]: 배열에 추가할 요소, 값을 작성하지 않은 경우 배열의 요소를 삭제하기만 한다.
우선 splice()의 매개변수에 start만 작성한 예시이다.
// 1. start값이 양수인 경우
const arr1 = ['가', '나', '다', '라', '마'];
const deleteArr1 = arr1.splice(2);
console.log(arr1); // ['가', '나']
console.log(deleteArr1); // ['다', '라', '마']
// 2. start값이 음수인 경우
const arr2 = ['가', '나', '다', '라', '마'];
const deleteArr2 = arr2.splice(-2);
console.log(arr2); // ['가', '나', '다']
console.log(deleteArr2); // ['라', '마']
start값이 양수인 경우 index값을 0부터 세고, 반대로 음수인 경우 index값을 -1부터 센다.
아래 예시는 매개변수에 start와 deleteCount를 작성한 예시이다.
// 1. deleteCount 값이 arr.length - start 값보다 적은 경우
const arr1 = ['가', '나', '다', '라', '마'];
const deleteArr1 = arr1.splice(0, 2);
console.log(arr1); // ['다', '라', '마']
console.log(deleteArr1); // ['가', '나']
// 2. deleteCount 값이 arr.length - start 값보다 많은 경우
const arr2 = ['가', '나', '다', '라', '마'];
const deleteArr2 = arr2.splice(1, 5);
console.log(arr2); // ['가']
console.log(deleteArr2); // ['나', '다', '라', '마']
deleteCount 값이 arr.length - start 값보다 적은 경우 deleteCount의 크기만큼 배열 요소를 삭제하는데,
deleteCount 값이 arr.length - start 값보다 많은 경우 start부터 모든 요소를 삭제한다.
📍 deleteCount값을 2로 작성하면 2는 미포함이며 index값이 1까지인 배열 요소가 삭제된다.
마지막 예시는 매개변수에 start, deleteCount 그리고 items를 작성한 예시이다.
const arr = ['가', '나', '다', '라', '마'];
const addArr = arr.splice(0, 2, '바', '사');
console.log(arr); // ['바', '사', '다', '라', '마']
console.log(addArr); // ['가', '나']
배열 index값이 0부터 2(2는 미포함)까지인 요소는 삭제되며 그 자리에 items인 '바'와 '사'를 배열 요소로 추가했다.
2️⃣ slice()
사용 방법: arr.slice(start, end);
- start[option]: 배열 요소의 추출 시작점에 대한 index, 0부터 시작하며, 음수인 경우 배열 끝에서부터 시작한다.
- end[option]: 배열 요소의 추출 종료점에 대한 index, end index를 제외하고 추출한다. (아래 예시 참고)
const arr = ['가', '나', '다', '라', '마'];
console.log(arr.slice()); // ['가', '나', '다', '라', '마']
console.log(arr.slice(2)); // ['다', '라', '마']
console.log(arr.slice(-1)); // ['마']
console.log(arr.slice(1, 3)); // ['나', '다']
console.log(arr.slice(-2, 5)); // ['라', '마']
console.log(arr); // ['가', '나', '다', '라', '마']
start값과 end값을 작성하지 않을 순 있지만 배열의 변화가 없어 무의미하다.
start값을 1로 초기화하고 end값을 3으로 작성하면 배열 요소 index가 3인 요소는 포함되지 않는다.그리하여 ['나', '다']만 추출된 것이다.
💡 splice()와 slice()의 차이점
- splice()는 원본 배열이 변경되고, slice()는 원본 배열이 변경되지 않는 것이다.
// 1. splice() : 원본 배열이 변경된다.
const arr1 = ['가', '나', '다', '라', '마'];
const deleteArr = arr1.splice(1, 2);
console.log(arr1); // ['가', '라', '마']
console.log(deleteArr); // ['나', '다']
// 2. slice() : 원본 배열이 변경되지 않는다.
const arr2 = ['가', '나', '다', '라', '마'];
const extractionArr = arr2.slice(1, 2);
console.log(arr2); // ['가', '나', '다', '라', '마']
console.log(extractionArr); // ['나']
'JavaScript > JS' 카테고리의 다른 글
[JavaScript] 변수(Variable)란? - (1) (0) | 2022.12.05 |
---|---|
[JavaScript] 배열 요소를 추가하고 싶을 때 어떤 방법이 좋을까? (0) | 2022.11.10 |
[JavaScript] 객체에서 key 하나 깔끔하게 지우는 방법 (0) | 2022.11.03 |
[JavaScript] 자바스크립트는 비동기적인데 왜 싱글 스레드일까? (0) | 2022.08.16 |
[JavaScript] 자바스크립트에서의 비동기 처리 async - await (0) | 2022.08.16 |