1 분 소요

알고리즘 문제를 풀 때 정말 많이 사용하는 메서드 중 하나인 splice를 제대로 활용하지 못하는 걸 느끼고 이렇게 정리하게 되었다.

우선, splice는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가해서 배열의 내용을 변경하는 메서드이다.

구문은 다음과 같다.

array.splice(원하는 시작 위치, 제거할 요소의 수, 추가할 값, 추가할 값, 추가할 값 ….)

MDN문서를 봐도 매번 헷갈리니까 내가 이해한대로 정리해보자.


1) 삭제 : 값이 2개만 있음

array.splice(원하는 시작 위치, 제거할 요소의 수)

var aaa = [0, 1, 2, 3];

// 1번 인덱스 값 포함해서 1개 제거. 즉 1번 인덱스만 제거하는 것.
aaa.splice(1, 1); // [ 0, 2, 3 ]
var aaa = [0, 1, 2, 3];

// 1번 인덱스 값 포함해서 3개 제거. 즉 1,2,3번 인덱스 제거하는 것.
aaa.splice(1, 3); // [ 0 ]

2) 추가 : 값이 3개 이상 있고, 2번째 값이 0

array.splice(원하는 시작 위치, 제거할 요소의 수, 추가할 값)

var aaa = [0, 1, 2, 3];

// 2번 인덱스에 7을 추가. 기존의 2번 인덱스 값들은 하나씩 뒤로 밀림.
aaa.splice(2, 0, 7); // [ 0, 1, 7, 2, 3 ]
var aaa = [0, 1, 2, 3];

// 2번 인덱스부터 7,8,9를 추가.
//추가하는 값들은 연달아 추가됨.기존의 2번 인덱스 값들은 하나씩 뒤로 밀림.
aaa.splice(2, 0, 7, 8, 9); // [ 0, 1, 7, 8, 9, 2, 3 ]

3) 교체 : 값이 3개있고, 2번째 값이 0이 아닌 상수

array.splice(원하는 시작 위치, 제거할 요소의 수, 추가할 값)

var aaa = [0, 1, 2, 3];

// 1번 인덱스부터 1개의 인덱스 값을 5로 교체. 즉 '1 => 5'가 되는 것
aaa.splice(1, 1, 5); // [0, 5, 2, 3]
var aaa = [0, 1, 2, 3];

// 1번 인덱스부터 2개의 인덱스 값을 5로 교체. 즉 '1,2 => 5'가 되는 것
aaa.splice(1, 2, 5); // [0, 5, 3]

4) splice한 값 추출하는 방법 : splice를 새 변수에 넣어주면 된다.

var aaa = [0, 1, 2, 3];

let answer = aaa.splice(1, 1);

console.log(answer); // [1]

태그:

카테고리:

업데이트:

댓글남기기