5

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
  • 7,093
  • 8
  • 66
  • 102
  • 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

14

Some ways to do it:

[...set];
[...set.keys()];
[...set.values()];
Array.from(set);
Array.from(set.keys());
Array.from(set.values());
Oriol
  • 274,082
  • 63
  • 437
  • 513
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
  • 384,651
  • 66
  • 527
  • 531