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:

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

javascriptlet arr = [...map];
console.log(arr); // [['a', 1], ['b', 2], ['c', 3]]

Pentru a obține un array de chei, vom descompune iteratorul corespunzător:

javascriptlet arr = [...map.keys()];
console.log(arr); // ['a', 'b', 'c']

Procedăm similar pentru a obține un array de valori:

javascriptlet arr = [...map.values()];
console.log(arr); // [1, 2, 3]
Задание 1

Descompuneți folosind spread următorul obiect:

javascriptlet obj = {
  a: 1,
  b: 2,
  c: 3,
  [Symbol.iterator]: function *(){
    for (let key in this){
      yield this[key];
    }
  }
};