코테를 풀다보면 splice , slice 관련 개념이 자주 나온다.
헷갈리면 안되는데 자꾸 헷갈려서 따로 정리를 해둬야겠다 싶었다!
slice() 함수는 배열로 부터 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용한다.
numbers = [0,1,2,3,4,5]
numbers.slice(2,4)
첫번째 인자로 시작 인덱스(index), 두번째 인자로 종료 인덱스를 반환
위 예시를 보면 2번째 인덱스부터 4번째까지를 반환하는데 이때 종료 인덱스번째는 제외하고 2,3번째만 출력한다!
따라서 [2,3] 만 출력 !!
배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다ㄷ.
numbers = [1,2,3,4,5]
const arr= numbers.splice(2,3,'a','b')
2번째 인덱스부터 4개의 요소를 삭제하고 'a','b'를 추가한다.
그럼 numbers에는 [1,2,a,b]가 저장되고
arr에는 삭제된 요소인 [3,4,5]가 들어있다.
프로그래머스 문자열 겹쳐쓰기에 대한 문제에서도 이 개념이 쓰인다.
<문제>
문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
예시
"He11oWor1d" "lloWorl" 2 "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"
우선 !
1. my_string에서 s 인덱스부터 overwrite_string 길이 만큼을 제거해줘야 겠지?
ex) He11oWor1d인 경우 2번째 인덱스부터 'lloWorl'의 길이인 7만큼을 제거하면 'H', 'e'만 남는다.
> const str=[...my_string] //배열로 바꾸기
str.splice(s,overwrite_string.length,overwrite_string);
// s번째 인덱스부터 overwrite_string 길이 만큼을 제거하고 또 overwrite_string을 그자리에 추가.
str.join(''); //배열을 문자열로 바꾸기