# Spread operator and iterators in JavaScript

The `spread` operator expands any object that has an iterator. This will take the default iterator. Let's look at an example. Let we have the following `Map` collection:

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

By default, when decomposed, a two-dimensional array will be obtained:

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

To obtain an array of keys, we decompose the corresponding iterator:

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

Let's do the same to get an array of values:

`let arr = [...map.values()]; console.log(arr); // [1, 2, 3]`

Expand the next object with spread operator:

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