나의 풀이
function solution(s) {
var answer = ''
let charNum = Math.floor(s.length / 2)
if (s.length % 2 === 0) {
return s.slice(charNum - 1, charNum+1)
} else {
answer = s[charNum]
}
return answer
}
다른 사람들이 푼 내용을 보니 slice 외에도 substring, substr 등을 활용해 푼 것을 보고 각 문자열 자르기 함수를 비교해보고자 공부를 했다.
문자열 자르기 함수
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4));
// Expected output: Array ["camel", "duck"]
const str = 'Mozilla';
console.log(str.substr(1, 2));
// Expected output: "oz"
console.log(str.substr(4,1));
// Expected output: "l"
console.log(str.substr(2));
// Expected output: "zilla"
const str = 'Mozilla';
console.log(str.substring(1, 3));
// Expected output: "oz"
console.log(str.substring(2));
// Expected output: "zilla"
그런데 slice와 substring의 설명이 같아서 차이점을 알아봤다.
차이점
start > end 일 때 :
substring은 start > end일 때, start와 end의 위치를 바꿔서 결과를 계산한다. 즉, substring(5, 0)은 substring(0, 5)으로 계산되는 반면
반면에 slice는 start > end일 때 빈 문자열('')을 리턴한다.
start가 음수일 때 :
substring은 start가 음수일 때 0으로 변경되고, slice는 음수일 때 문자열 끝에서 앞쪽으로 음수만큼 이동된 Index로 계산된다.
end가 음수일 때 :
substring은 end가 음수일 때 0으로 계산되며, slice는 문자열 끝에서 앞쪽으로 이동하여 위치를 찾는다.
아래는 예제와 함께 잘 설명해 놓은 블로그 링크이다.
https://codechacha.com/ko/javascript-substring-vs-slice/