String Cartography pt-br Explainer

tem bug no editor, mas da pra passar

A linha do seu laço for contém um erro na segunda parte do teste: ao invés de i = string.length o correto é:
i < string.length.

No seu caso, você criou um loop infinito, por isso que se repetiu tantas vezes.

1 Like

Estou exatamente com o mesmo problema

F5 resolveu meu problema hahahah

Estou com o mesmo problema. Não consigo avançar!!

Estou com um dúvida em relação a lógica desse problema, em que momento o objeto Map criado no início da função recebeu como propriedade ou caracter da string:
Função (string) {
let Map = {} ;
//Aí vem o for clássico e tal
For (let i = 0; e etc…) {
let letter = string [i]

//Uma variável foi criada para guardar o caráter da //string, e depois vem o If e else
If (Map[letter]) {
Map[letter]. Push (i)
} else {
Map[letter] = [i]
}
}
A dúvida é em que momento o objeto recebeu o como propriedade o caracter da string pois antes do If não deveria ter algo assim ex: Map {} = letter: [ ] ;
Para atribuir a propriedade ao objeto


Não sei onde estou errando, tentei seguir as dicas mas só consigo colocar o i em colchetes amarelos: [i;___]

Typing wasn’t working, than I decided to get it on paper and it worked!

Povo pra mim deu certo

Na

1 Like

Escreva uma função que pega uma string e retorna um objeto. O objeto deve ter uma propriedade para cada um dos caracteres da string. Cada propriedade deve armazenar uma array de índices em que os caracteres estão localizados. Por exemplo: mapString(‘boohoo’) retornaria:

{ b: [0], o: [1, 2, 4, 5], h: [3] }

import { word } from ‘grasshopper.wordList’;
console.log(word);
function mapString(string, ___) {
let map = {
___: ___
};
for (let i = 0; i < string.length; i++) {
let letter = string[i];
if (map[letter]) {
map[letter].push(i);
} else {
map[letter] = [
i,
___
];
}
}
return map;
};
let stringMap = mapString(word);
for (let letter in stringMap) {
console.log(letter + ': ’ + stringMap[letter]);
}


1 Like

Estou a 3 dias tentando resolver e nem as dicas dos meus colegas tem dado certo. Vou continuar tentando.

Let declara uma variável local, então isso não importa pois essa variável só terá validade dentro do bloco de código onde ela está sendo executada.

Aqui está a resposta para quem precisa

import

{

word

}

from

‘grasshopper.wordList’

;

console

.

log

(

word

)

;

function

mapString

(

string

,


)

{

let

map

=

{


:


}

;

for

(

let

i

=

0

;

i

<

string

.

length

;

i

++

)

{

let

letter

=

string

[

i

]

;

if

(

map

[

letter

]

)

{

map

[

letter

]

.

push

(

i

)

;

}

else

{

map

[

letter

]

=

[

i

,


]

;

}

}

return

map

;

}

;

let

stringMap

=

mapString

(

word

)

;

for

(

let

letter

in

stringMap

)

{

console

.

log

(

letter

': ’

stringMap

[

letter

]

)

;

} import

{

word

}

from

‘grasshopper.wordList’

;

console

.

log

(

word

)

;

function

mapString

(

string

,


)

{

let

map

=

{


:


}

;

for

(

let

i

=

0

;

i

<

string

.

length

;

i

++

)

{

let

letter

=

string

[

i

]

;

if

(

map

[

letter

]

)

{

map

[

letter

]

.

push

(

i

)

;

}

else

{

map

[

letter

]

=

[

i

,


]

;

}

}

return

map

;

}

;

let

stringMap

=

mapString

(

word

)

;

for

(

let

letter

in

stringMap

)

{

console

.

log

(

letter

': ’

stringMap

[

letter

]

)

;

}

1 Like

Reescrevi várias vezes, não sei o que aconteceu de repente foi :man_shrugging:t2:

1 Like

Pelo que eu entendi, o problema é que o código da um “erro” no local errado, se vc usar o colchetes LARANJAS, mas não tiver dado o comando do RETURN map (por exemplo), ele diz que o erro estava no map[letter] = [i], sendo que o erro, é só pq vc ainda não tinha colocado o return.

Alguém pode me ajudar não sai dessa fase

Atenção no final do código que vem pronto
Coloque letter onde está i

Alguém conseguiu resolver essa questão? No meu não está dando certo. Já tentei inúmeras vezes de várias maneiras também

Vc é um gênio, pqp! Estava conseguindo de jeito nenhum

1 Like

Consegui assim

2 Likes