Operatorul spread și iteratori în JavaScript
Operatorul spread descompune orice obiect
care are un iterator. În acest caz, va fi
folosit iteratorul implicit. Să ne
uităm la un exemplu. Să presupunem că avem
următoarea colecție Map:
let map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);
În mod implicit, la descompunere se va obține un array bidimensional:
let arr = [...map];
console.log(arr); // [['a', 1], ['b', 2], ['c', 3]]
Pentru a obține un array de chei, vom descompune iteratorul corespunzător:
let arr = [...map.keys()];
console.log(arr); // ['a', 'b', 'c']
Procedăm similar pentru a obține un array de valori:
let arr = [...map.values()];
console.log(arr); // [1, 2, 3]
Descompuneți folosind spread următorul obiect:
let obj = {
a: 1,
b: 2,
c: 3,
[Symbol.iterator]: function *(){
for (let key in this){
yield this[key];
}
}
};