Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

264
Visualizações
Array[position] returning NaN when it should be returning a string

The Problem: You are going to be given a word. Your job is to return the middle character of the word. If the word's length is odd, return the middle character. If the word's length is even, return the middle 2 characters.

My Solution

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`));

But i'm receiving a NaN output, rather than h , where has str[input] deviated from the my intention?

Thanks in advance!

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Some annotations:

  • Return a boolean for a function which starts with is....
  • Take the floored middle index without an offset of one.
  • Check the string length instead of the middle index without having an integer value.
  • Return either the single character or slice the string with adjustmens for start and end.

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'));

about 4 years ago · Juan Pablo Isaza Relatório

0

you are passing the wrong value to 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`));
about 4 years ago · Juan Pablo Isaza Relatório

0

Your execution was a little bit off!

  • I changed your isOdd function to return a boolean value, instead of a number.
  • After every calculation of the middle digit I subtracted 1 from the result, as we are working with indexes (and they start the count of the positions at 0, instead of 1).
  • For the second middle digit when the word length is even, you just have to do "str.length/2", no need for adding or subtracting 1.

    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`));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda