Spread operator en iterators in JavaScript

De spread operator decomposeert elk object dat een iterator heeft. Hierbij wordt de standaard iterator gebruikt. Laten we een voorbeeld bekijken. Stel we hebben de volgende Map collectie:

javascriptlet map = new Map();
map.set('a', 1);
map.set('b', 2);
map.set('c', 3);

Standaard zal decompositie resulteren in een tweedimensionale array:

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

Om een array van sleutels te krijgen, decomponeren we de bijbehorende iterator:

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

Op dezelfde manier doen we dit voor het verkrijgen van een array van waarden:

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

Decomposeer het volgende object met spread:

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