[mydocs] splice
알고리즘 문제를 풀 때 정말 많이 사용하는 메서드 중 하나인 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]
댓글남기기