Cartografía de strings 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'])

}

);

1 Like

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

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]
1 Like

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.

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