Skip to content

Map and Set #263

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
Jul 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
cd5ac90
mapset
vplentinax Jun 18, 2020
981da7f
update solution
EzequielCaste Jul 4, 2020
e4ceae7
update task
EzequielCaste Jul 4, 2020
78e1bfa
update solution
EzequielCaste Jul 4, 2020
e61c2a6
corrección de líneas
EzequielCaste Jul 4, 2020
1c79cbe
corrección número líneas
EzequielCaste Jul 4, 2020
883cd95
fixed line numbers
EzequielCaste Jul 4, 2020
e6f57ea
Update 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
vplentinax Jul 4, 2020
af49a81
Update 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
vplentinax Jul 4, 2020
459c874
Update 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
vplentinax Jul 4, 2020
f6f6016
Update 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
vplentinax Jul 4, 2020
438b4d7
Update 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
vplentinax Jul 4, 2020
e101acc
Update 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
vplentinax Jul 4, 2020
f754d71
Update 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
vplentinax Jul 4, 2020
740687f
Update 1-js/05-data-types/07-map-set/03-iterable-keys/task.md
vplentinax Jul 4, 2020
444e0a5
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
669b0ff
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
c3f6fc4
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
b2df4f7
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
2c56508
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
74fee8b
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
3178435
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
3b5c116
Update 1-js/05-data-types/07-map-set/article.md
vplentinax Jul 4, 2020
7dcaca0
Update task.md
vplentinax Jul 4, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions 1-js/05-data-types/07-map-set/01-array-unique-map/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ let values = ["Hare", "Krishna", "Hare", "Krishna",
"Krishna", "Krishna", "Hare", "Hare", ":-O"
];

alert( unique(values) ); // Hare, Krishna, :-O
alert( unique(values) ); // Hare, Krishna, :-O
```

P.D. Aquí se usan strings, pero pueden ser valores de cualquier tipo.

P.D.S. Use `Set` para almacenar valores únicos.


P.D.S. Use `Set` para almacenar valores únicos.
14 changes: 7 additions & 7 deletions 1-js/05-data-types/07-map-set/02-filter-anagrams/solution.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

Para encontrar todos los anagramas, dividamos cada palabra en letras y las ordenamos. Cuando se clasifican las letras, todos los anagramas son iguales.

Por ejemplo:
Expand All @@ -10,7 +9,7 @@ cheaters, hectares, teachers -> aceehrst
...
```

Utilizaremos las variantes ordenadas por letras como propiedades de Map para almacenar solo un valor por cada propiedad:
Utilizaremos las variantes ordenadas por letras como claves de Map para almacenar solo un valor por cada clave:

```js run
function aclean(arr) {
Expand All @@ -23,13 +22,15 @@ function aclean(arr) {
*/!*
map.set(sorted, word);
}

return Array.from(map.values());
}

let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];

alert( aclean(arr) );
```

La clasificación de letras se realiza mediante la cadena de llamadas en la línea `(*)`.

Por conveniencia la dividimos en múltiples líneas:
Expand All @@ -41,24 +42,23 @@ let sorted = arr[i] // PAN
.sort() // ['a','n','p']
.join(''); // anp
```

Dos palabras diferentes`'PAN'` y `'nap'` reciben la misma forma ordenada por letras `'anp'`.

La siguiente línea pone la palabra en el Map:


```js
map.set(sorted, word);
```

Si alguna vez volvemos a encontrar una palabra con la misma forma ordenada por letras, sobrescribiría el valor anterior con la misma propiedad en Map. Por lo tanto, siempre tendremos como máximo una palabra ordenada por letras.
Si alguna vez volvemos a encontrar una palabra con la misma forma ordenada por letras, sobrescribiría el valor anterior con la misma clave en Map. Por lo tanto, siempre tendremos como máximo una palabra ordenada por letras.

Al final, `Array.from (map.values())` toma un valor iterativo sobre los valores de Map (no necesitamos propiedades en el resultado) y devuelve un array de ellos.
Al final, `Array.from (map.values())` toma un valor iterativo sobre los valores de Map (no necesitamos claves en el resultado) y devuelve un array de ellos.

Aquí también podríamos usar un objeto plano en lugar del `Map`, porque las propiedades son strings.
Aquí también podríamos usar un objeto plano en lugar del `Map`, porque las claves son strings.

Así es como puede verse la solución:


```js run demo
function aclean(arr) {
let obj = {};
Expand Down
2 changes: 1 addition & 1 deletion 1-js/05-data-types/07-map-set/02-filter-anagrams/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ Escriba una función `aclean(arr)` que devuelva un array limpio de anagramas.

Por ejemplo:


```js
let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];

alert( aclean(arr) ); // "nap,teachers,ear" o "PAN,cheaters,era"
```

Es decir, de cada grupo de anagramas debe quedar solo una palabra, sin importar cual.

1 change: 1 addition & 0 deletions 1-js/05-data-types/07-map-set/03-iterable-keys/solution.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Eso es porque `map.keys()` devuelve un iterable, pero no un array.

Podemos convertirlo en un array usando `Array.from`:


```js run
let map = new Map();

Expand Down
5 changes: 2 additions & 3 deletions 1-js/05-data-types/07-map-set/03-iterable-keys/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ importance: 5

---

# Propiedades iterables
# Claves iterables

Nos gustaría obtener un array de `map.keys()` en una variable y luego aplicarle métodos específicos de array, ej. .push.
Nos gustaría obtener un array de `map.keys()` en una variable y luego aplicarle métodos específicos de array, ej. `.push`.

Pero eso no funciona:

Expand All @@ -22,4 +22,3 @@ keys.push("more");
```

¿Por qué? ¿Cómo podemos arreglar el código para que funcione `keys.push`?

Loading