String Cartography es-419 Explainer

Explicación de Cartografía de strings

Objetivo de este acertijo: Escribir una función que tome un string y devuelva un objeto que tenga cada carácter del string como una propiedad, cada una de las cuales debe tener un arreglo de índices donde aparezca el carácter.

Tutorial de la solución:
La función que escribas en este acertijo, tomará un string y devolverá un objeto que muestre cuales son los caracteres que están en el string y todos los índices donde aparecen estos caracteres. Por ejemplo, llamamos a la función en el string 'bookkeeper':


mapString('bookkeeper');

Esto devolverá un objeto que se verá así:


{

b: [0],

o: [1, 2],

k: [3, 4],

e: [5, 6, 8],

p: [7],

r: [9]

}

El objeto tiene una propiedad diferente para cada carácter en el string. Dentro de cada propiedad hay un arreglo que contiene las posiciones de los índices donde aparecen los caracteres.

Comienza escribiendo la función al crear un objeto vacío dentro de la función. Por ejemplo:


let map = {};

Luego, agrega un classic for loop para iterar por el string.


for (let i = 0; i < string.length; i++) {

}

Dentro del for loop, crea otra variable local para almacenar el carácter actual. Por ejemplo:


let letter = string[i];

Luego, usa una if else statement (también se puede usar una declaración ternaria) para verificar si una propiedad ya existe en map para la letra actual. Si la propiedad no existe, será indefinida, y esto es falsy. La if else statement se verá algo como esto:


if (map[letter]) {

} else {

}

Si la propiedad ya existe (es decir, el carácter actual se ha visto antes), empuja el índice del carácter actual al arreglo que contiene la propiedad. Si no existe, crea el arreglo (con el índice adentro como el primer elemento). Debe aparecer así:


if (map[letter]) {

map[letter].push(i);

} else {

map[letter] = [i];

}

Por último, al final de la función, devuelve map.

Conceptos de JavaScript: funciones, objetos, propiedades, strings, for loops, if statements, veracidad

Código adicional (código oculto que se ejecuta antes del código del acertijo):


defineModule(

'grasshopper.wordList',

{

word: pickRandom(['boo', 'banana', 'bookkeeper', 'code'])

}

);

2 Likes

Hi guys i hace an isue i can nlt find {} empty to initializate like this let map = {}. Only i can use { string:string } bit this Is not for initializate objects . Thanks

lol XD I can’t either…twins :]

I find the way to initializate
let

sobject

=

{

___ edit

:


}

; is not very good, but is working

Hola como está me puede ayudar con Cartografia de strings es que me e quedado aca

Hola y si te ayudaré :slight_smile:

Hola señor

28506277_170x100

2 Likes

En que te quedaste , lo que estaba mal que se me trababa era porque no se podia inicializar pero de la forma que lo puse se puede hacer andar, pon tu duda cualquier cosa

Slds

gracias senorita :slight_smile:

How do you do? Thanks a lot in advance! I’m stuck at

If the property does not exist, create it and define its value in an array that contains the index of the current character. For example: map [letter] = [i]

I can’t make it work: my code looks like this:

  map [letter] = ---[i]
2 Likes

Hi rafa how are you?
You wanna make this problem???
import
image image

I’m still having issues solving the :

Allí tenéis la solución al problema.

3 Likes

Estoy en problemas ayúdame a encontrar la solución tengo días atorado en este.

Olá, o meu tá igualzinho ao seu mas está dando problema.
O seu funcionou?

Yo lo ise de esta manera y me funciono:

Hola,
Justamente en este tema de cartografía, no corre el ejercicio que ejecuté, pese haber revisado errores, por lo que solicito respetuosamente saber si me pueden ayudar, de lo cual quedaré muy agradecida.
Quedó de ustedes
Carolina

Amigos a mi me funcionó perfectamente siguiendo los consejos acá suministrados, me funcionó de tres maneras distintas, solo seguí el paso a paso y los consejos de tutorial.
Saludos.

Olá. Pessoal.

Conseguiu fazer💪

Olha aí (:eye:.:eye:)

:point_right:String Cartography pt-br Explainer

Vi que ainda tem gente procurando por esse assunto.

A minha ficou assim.

Presta atenção, no que se ref:

Tem gente usando depois do else

map[.letter] com ponto. :x::x::x: ERRADO!

[.letter]:x::x::x::x::x:
[letter]:white_check_mark:

É letter SEM PONTO e todo minúsculo.:white_check_mark:

Ah! Tbm fiz uso dos Colchetes👉 LILÁS, nas ferramentas que disponibilizam

Bom! Espero que ajude.

Boa Sorte!

Screenshot_20211028-165942~2

Gracias, muuuchas gracias