-
Notifications
You must be signed in to change notification settings - Fork 0
/
buclesForInForOf.js
75 lines (54 loc) · 1.77 KB
/
buclesForInForOf.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
* Los bucles for..in recorren todas las prop de un objeto y devuelven los indices o los nombres de las prop de este obj
* Los bucles for..of devuelven los valores del arreglo, dependen de la implementación del método iterador que el obj tenga
* El método iterador lo que indica e orden en que los valores se iteran dentro del objeto
* En este ejem el método iterador solo toma en cuenta los valores que se definen dentro del arreglo e ignora cualquier
* otra prop que esten en el arreglo
*
*/
let arr = ['elemento1', 'elemento2', 'elemento3'];
arr.nuevapropiedad = 'prop';
console.log('\nfor..in en un arreglo');
// clave hace referenia a las claves en el objeto
for(let clave in arr){
console.log(clave);
}
console.log('\nfor..of en un arreglo');
// valor hace referenia a los valores en el objeto
for(let valor of arr){
console.log(valor);
}
console.log(arr[Symbol.iterator]);
// ----------------------------------------
let cadena = "ABC";
console.log("\nfor..in en un string");
for(let letra in cadena){
console.log(letra);
}
console.log("\nfor..of en un string");
for(let letra of cadena){
console.log(letra);
}
console.log(cadena[Symbol.iterator]);
// ----------------------------------------
let obj = {
a: 'elemento1',
b: 'elemento2',
c: 'elemento3',
}
console.log("\nfor..in en un objeto");
for(let clave in obj){
console.log(clave);
}
console.log("\nfor..of en un objeto");
// el uso de for..of causará errores en un objeto porque no son iterables, no implementan por defecto el método iterador
// para resolver esto hacemos lo sig
// Implementacion de metodo @@iterator
obj[Symbol.iterator] = function* (){
yield "elemento1";
yield "elemento2";
yield "elemento3";
};
for(let valor of obj){
console.log(valor);
}