El problema: se le va a dar una palabra. Su trabajo es devolver el carácter medio de la palabra. Si la longitud de la palabra es impar, devuelve el carácter del medio. Si la longitud de la palabra es par, devuelve los 2 caracteres del medio.
Mi solución
function isOdd(num) { return num % 2; } function getMiddle(str) { const middleDigit = (str.length + 1) / 2; if (isOdd(middleDigit) === 1) { return str[middleDigit]; } else { return str[middleDigit - 0.5] + str[middleDigit + 0.5]; } } console.log(getMiddle(`the`)); Pero recibo una salida NaN , en lugar de h , ¿dónde se ha desviado str[input] de mi intención?
¡Gracias por adelantado!
Algunas anotaciones:
is... . function isOdd(num) { return num % 2 === 1; } function getMiddle(str) { const middleDigit = Math.floor(str.length / 2); return isOdd(str.length) ? str[middleDigit] : str.slice(middleDigit - 1, middleDigit + 1); } console.log(getMiddle('the')); console.log(getMiddle('boot'));está pasando el valor incorrecto a is_odd
function isOdd(num) { return ((num % 2) === 1); } function getMiddle(str) { const middleDigit = Math.floor(str.length / 2); if (isOdd(str.length)) { return str[middleDigit]; } else { return str[middleDigit - 1] + str[middleDigit]; } } console.log(getMiddle(`they`));¡Tu ejecución estuvo un poco fuera de lugar!
function isOdd(num) { return num % 2 === 1; } function getMiddle(str) { if (isOdd(str.length)) { return str[((str.length + 1) / 2) - 1]; } else { return str[(str.length / 2) - 1] + str[str.length / 2]; } } console.log(getMiddle(`the`)); console.log(getMiddle(`root`));