Функция возвращает если число нечетное, средний символ строки, а если четное, то средние два символа. А если в строке один символ, то возвращает её
GetMiddle():
function getMiddle(str) {
if (str.length > 0 && str.length < 1000) {
var evenOrOdd = function(number) {
return (+number % 2) == 0?true:false;
}
var $evenOrOdd = evenOrOdd(str)
if (str.length == 1) {
return str
} else
if ($evenOrOdd) {
return str[str.length / 2] + str[str.length / 2 -1]
} else {
return str[(str.length - 1) / 2]
}
}
}
Тесты с нечетными она проходит, а вот с четными возвращает undefined
Есть несколько моментов:
function getMiddle(str) { // Будем брать .length, а если дадут не строку или объект с этим свойством?
if (str.length > 0 && str.length < 1000) { // Лимит установили, но в случае выхода из лимита не обработали
var evenOrOdd = function(number) { // Отдельная функция на раз вызова и каждый вызов её заново определять?
return (+number % 2) == 0?true:false; // Контекст подразумевает возвращения булева значения, зачем условия; возвращайте сам результат сравнения
}
var $evenOrOdd = evenOrOdd(str.length) // Мы же длину хотим проверять, а не значение строки (ошибка тут)
if (str.length == 1) { // В начале стоит делать это
return str
} else // Это не ошибка, но не ставить скобки в таком месте - тимлид на ревью будет очень недоволен
if ($evenOrOdd) {
return str[str.length / 2] + str[str.length / 2 -1] // Стоит поменять местами выборку символов (из-за нумерации символов с нуля, str.length / 2 укажет на второй нужный символ, а str.length / 2 -1 как раз на предыдущий)
} else {
return str[(str.length - 1) / 2]
}
}
}
console.info(getMiddle("Some"));
console.info(getMiddle("Thing"));
var $evenOrOdd = evenOrOdd(str.length);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости