Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
3 changes: 3 additions & 0 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 @@ -2,6 +2,7 @@ importance: 5

---


Comment thread
vplentinax marked this conversation as resolved.
Outdated
# Filtrar miembros únicos del array
Comment thread
vplentinax marked this conversation as resolved.

Comment thread
vplentinax marked this conversation as resolved.
Permita que `arr` sea un array.
Expand All @@ -21,6 +22,8 @@ let values = ["Hare", "Krishna", "Hare", "Krishna",

alert( unique(values) ); // Hare, Krishna, :-O
Comment thread
vplentinax marked this conversation as resolved.
Outdated
```
Comment thread
vplentinax marked this conversation as resolved.

Comment thread
vplentinax marked this conversation as resolved.

P.D. Aquí se usan strings, pero pueden ser valores de cualquier tipo.
Comment thread
vplentinax marked this conversation as resolved.

P.D.S. Use `Set` para almacenar valores únicos.
Comment thread
vplentinax marked this conversation as resolved.
Outdated
Expand Down
20 changes: 16 additions & 4 deletions 1-js/05-data-types/07-map-set/02-filter-anagrams/solution.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,55 @@ Para encontrar todos los anagramas, dividamos cada palabra en letras y las orden

Por ejemplo:


```
nap, pan -> anp
ear, era, are -> aer
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) {
let map = new Map();

for (let word of arr) {

// dividir la palabra por letras, ordenarlas y volver a unir

*!*
let sorted = word.toLowerCase().split('').sort().join(''); // (*)
*/!*
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:

```js
let sorted = arr[i] // PAN

.toLowerCase() // pan
.split('') // ['p','a','n']
.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:
Expand All @@ -50,11 +61,12 @@ La siguiente línea pone la palabra en el Map:
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.

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.
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 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:

Expand Down
4 changes: 4 additions & 0 deletions 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 @@ -8,12 +8,14 @@ importance: 4

Por ejemplo:


```
nap - pan
ear - are - era
cheaters - hectares - teachers
```


Escriba una función `aclean(arr)` que devuelva un array limpio de anagramas.

Por ejemplo:
Expand All @@ -22,7 +24,9 @@ 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.

2 changes: 2 additions & 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
@@ -1,8 +1,10 @@


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
6 changes: 5 additions & 1 deletion 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,12 +2,13 @@ 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.
Comment thread
vplentinax marked this conversation as resolved.
Outdated

Pero eso no funciona:


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

Expand All @@ -16,10 +17,13 @@ map.set("name", "John");
let keys = map.keys();

*!*

// Error: keys.push no es una función

keys.push("more");
*/!*
```


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

Loading