JavaScript slice 활용법: 기본 사용법부터 성능 최적화까지
알고리즘을 풀면서 어떤 경우에 slice를 쓰면 효율적일까? slice()를 무조건 쓰는 게 성능에 좋은걸까?
📝 들어가며
이 섹션의 첫 글을 slice로 정한 것은 문자열 겹쳐쓰기
문제를 풀면서 본 더 나은 풀이방법 때문이었습니다.
다른 사람의 풀이 중 slice
를 활용해 한 줄로 풀이를 마친 답안이었는데요,
답안은 다음과 같습니다.
function solution(my_string, overwrite_string, s) {
return (
my_string.slice(0, s) +
overwrite_string +
my_string.slice(s + overwrite_string.length)
);
}
slice
가 문자열이나 배열을 "자른다" 정도로만 인식하고 있었어서, 정확히 어떤값을 리턴하고 어떻게 쓰는지에 대해서는 몰랐기 때문에 이번 기회에 사용법과 어떤 알고리즘 패턴에서 활용할 수 있을지, 실무에서 쓸 수 있을 만한 상황까지 정리해보려 합니다.
📝 slice()의 기본 개념
기본 사용 방법
array.slice(start, end)
const arr = ["ant", "bison", "camel", "duck", "elephant"];
console.log(arr.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]
어떤 배열의 start index부터 end index의 바로 앞 요소 까지에 대한 얕은 복사본을 새로운 배열 객체로 반환하며, 원본 배열은 바뀌지 않습니다. start index값만 있으면 배열 끝까지 출력됩니다.
slice(start, end)에서 end가 포함되지 않는다.
slice()의 동작 방식에 대한 시각적 자료 추가
slice(start, end)에서 end가 포함되지 않는 이유를 설명할 때, 문자열이나 배열을 인덱스별로 나눈 다이어그램을 넣으면 직관적으로 이해하기 좋을 것 같아. 예를 들어, "abcdef".slice(1, 4)의 결과를 ['b', 'c', 'd']로 시각화해서 설명.