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]