Problem
- If the word’s length is odd, return the middle character.
- 단어의 길이가 홀수인 경우, 중간 문자를 반환한다.
- If the word’s length is even, return the middle 2 characters.
- 단어의 길이가 짝수인 경우, 중간 문자 2개를 반환한다.
Solution 01
function getMiddle(str) {
let middle = Math.floor(str.length / 2);
if (str.length % 2 === 0) {
return str.slice(middle - 1, middle + 1);
} else {
return str.slice(middle, middle + 1);
}
}
getMiddle('odd'); // d
getMiddle('even'); // ve
Math.floor()
: 가장 가까운 정수로 반내림하고, 결과를 반환한다.slice()
: 문자열/배열의 일부를 추출하고, 새 문자열/배열로 반환한다.
Solution 02
function getMiddle(str) {
let middle = Math.floor(str.length / 2);
return str.length % 2 === 0
? str.slice(middle - 1, middle + 1)
: str.slice(middle, middle + 1);
}
getMiddle('odd'); // d
getMiddle('even'); // ve
Solution 03
function getMiddle(str) {
let middle = Math.ceil(str.length / 2);
return str.length % 2 === 0
? str.slice(middle - 1, middle + 1)
: str.slice(middle - 1, middle);
}
getMiddle('odd'); // d
getMiddle('even'); // ve
Math.ceil()
: 가장 가까운 정수로 반올림하고, 결과를 반환한다.
Solution 04
function getMiddle(str) {
let middle = Math.round(str.length / 2);
return str.length % 2 === 0
? str.slice(middle - 1, middle + 1)
: str.slice(middle - 1, middle)
}
getMiddle('odd'); // d
getMiddle('even'); // ve
Math.round()
: 가장 가까운 정수로 반올림한다.
Solution 05
function getMiddle(str) {
return str.slice((str.length - 1) / 2, str.length / 2 + 1);
}
getMiddle('odd'); // d
getMiddle('even'); // ve