In the Right Place pt-br Explainer

Explicação de No lugar certo

Objetivo do desafio: Criar uma função auxiliar que verificará se um caractere está na ordem correta.
Passo a passo da solução: No desafio anterior, você escreveu uma função que verificava se todos os caracteres de uma string existiam como propriedades em um mapa de objeto de outra string. Entretanto, ela não verificou a ordem.

Neste desafio você criará uma função auxiliar que pode ser usada pela função do desafio para determinar se uma string é uma subsequência.

Como lembrete, a função desse desafio é comparar uma string com um objeto. Para uma string como 'balloon', o objeto ficará assim:

{
  b: [0],
  a: [1],
  l: [2, 3],
  o: [4, 5],
  n: [6]
}

Cada caractere em 'balloon' foi transformado em uma propriedade, com os índices onde o caractere aparece armazenado como uma array.

A função neste desafio terá 2 parâmetros, um índice representando o índice mínimo possível que um caractere precisaria para estar na ordem, e uma array.

Comece o desafio adicionando um laço na função para fazer a iteração pela array. Por exemplo:

  for (var element of array) {

  }

Dentro, adicione uma if statement que verifique se o índice atual, element, é maior ou igual ao índice mínimo possível, minIndex:

  for (var element of array) {
    if (element >= minIndex) {
      
    }
  }

Se isso for verdadeiro, precisaremos retornar esse índice + 1. Adicionar 1 dirá à função que chama esta função auxiliar para atualizar o índice mínimo possível para o próximo caractere que ela procura.

  for (var element of array) {
    if (element >= minIndex) {
      return element + 1;
    }
  }

Ao final da função, retornar false. Esta linha de código só será executada se não forem encontrados números na array maiores ou iguais ao índice mínimo possível. Retornar false dirá à função que chama a função auxiliar que a palavra que está verificando não é uma subsequência, porque as letras estão fora de ordem.

Conceitos de JavaScript: Funções, Strings, Indexação, Arrays, Laço for
Código Adicional (código oculto executado antes do código do desafio):
[detalhes]

let indices = [3,7];
let minIndex = [4];

[/details]

1 Like

A solução está correta, porém não avanço no curso!

2 Likes

Olá Jeova, você conseguiu?

Refiz todo o código por diversas vezes.
Percebi que se o meu código não for idêntico a resposta, com o mesmo resultado, não avançava.
Após vários testes, consegui avançar no curso.

Caso se mantenha esse procedimento o aluno, que não for persistente, desistirá.
Acredito que abrindo possiblidades de outras soluções não limitará o aluno.

1 Like

E aí galera, tudo bem com vocês? Eu consegui resolver o exercício… eu que eu tive que fazer foi apenas trocar os nomes, pois na verdade queria dar nome as minhas próprias nomenclaturas para ver se entendi bem o conceito, porém, no fim das contas tive que fazer exatamente (nomenclatura) para poder avançar.

3 Likes

Olá, tbm consegui resolver o desafio e está exatamente igual ao da resposta, porém não dá como certa. Acho q deve ser algum bug.

1 Like

Como o nosso Amigo @Vando_Santos disse, se vc renomear a variável que itera sobre a array, ele não vai dar como concluído o teste.