Задача: вернуть средний символ слова. Если длина слова нечетна, верните средний символ. Если длина слова четная, верните средние 2 символа.
function getMiddle(s){
var even, odd, centerLetter,arrLetter;
(s.length%2==0) ? (centerLetter = (Math.round(s.length/2))) : (centerLetter = (Math.round(s.length/2))-1) ;
arrLetter = s.split("");
(s.length%2==0) ? (console.log( arrLetter[centerLetter-1] + arrLetter[centerLetter] )) :(console.log(arrLetter[centerLetter]));
}
getMiddle("test"); //es
getMiddle("testing");//t
getMiddle("middle");//dd
getMiddle("A");//A
Вопрос: Я написал код который вывод в консоль ответ, как мне переписать код чтобы он возвращял функции через return?
function getMiddle(s) {
return !(s.length % 2) ? s.substr(s.length / 2 - 1, 2) : s[Math.round(s.length / 2) - 1];
}
console.log(getMiddle('test'))
console.log(getMiddle('testing'))
console.log(getMiddle('middle'))
console.log(getMiddle('A'))
Обновлено
Более короткий способ (спасибо @Regent, см. комментарии к посту)
function getMiddle(s) {
return s.substr((s.length - 1) / 2, 2 - s.length % 2);
}
console.log(getMiddle('test'))
console.log(getMiddle('testing'))
console.log(getMiddle('middle'))
console.log(getMiddle('A'))
Один из вариантов: заменить тернарные оператор на if
и в этом случае достаточно заменить console.log
на return
function getMiddle(s) {
var even, odd, centerLetter, arrLetter;
if (s.length % 2 == 0) {
centerLetter = (Math.round(s.length / 2));
} else {
centerLetter = (Math.round(s.length / 2)) - 1;
}
arrLetter = s.split("");
if (s.length % 2 == 0) {
return arrLetter[centerLetter - 1] + arrLetter[centerLetter];
} else {
return arrLetter[centerLetter];
}
}
console.log(getMiddle("test")); //es
console.log(getMiddle("testing")); //t
console.log(getMiddle("middle")); //dd
console.log(getMiddle("A")); //A
Либо использовать непосредственные результаты тернарного оператора:
function getMiddle(s) {
var even, odd, centerLetter, arrLetter;
centerLetter = (s.length % 2 == 0) ? Math.round(s.length / 2) : ((Math.round(s.length / 2)) - 1);
return (s.length % 2 == 0) ? (s[centerLetter - 1] + s[centerLetter]) : (s[centerLetter]);
}
console.log(getMiddle("test")); //es
console.log(getMiddle("testing")); //t
console.log(getMiddle("middle")); //dd
console.log(getMiddle("A")); //A
В конце функций в return = centerLetter;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У нас в компании есть внутренний сайт,на котором есть доступ к IP камерам, суть такова - нажимаем на иконку камеры и выводится изображение,...
Мне нужно динамически применить некоторые CSS custom properties в :root{} Как я могу это сделать? Заранее,спасибо