4

There doesn't seem to be an easy and elegant way of converting a Javascript Set to an array.

var set = new Set();
set.add("Hello");
set.add("There");
set.add(complexObject);

var setConvertedToArray = convertSetToArray(set);

console.log( setConvertedToArray ); // ["Hello", "There", ►Object ]

A map feels about right, but the Set prototype only has a forEach.

Yuck:

function convertSetToArray(set) {
  var a = [];
  set.forEach( x => a.push(x) ); 
  return a;
}

Anyone know of a nice way to convert a Set to an array?

aaaidan
  • 6,422
  • 8
  • 58
  • 98
  • Or better one [How to convert Set to Array?](http://stackoverflow.com/questions/20069828/how-to-convert-set-to-array) – Tushar Jan 11 '16 at 03:24

2 Answers2

12

Some ways to do it:

[...set];
[...set.keys()];
[...set.values()];
Array.from(set);
Array.from(set.keys());
Array.from(set.values());
Oriol
  • 225,583
  • 46
  • 371
  • 457
3

You can use the Array.from() method which returns an array from Array like objects like Set

var set = new Set();
set.add("Hello");
set.add("There");
set.add({});

var setConvertedToArray = Array.from(set);

document.body.innerHTML = setConvertedToArray instanceof Array;
Arun P Johny
  • 365,836
  • 60
  • 503
  • 504