将Javascript`Set`转换为数组

时间:2016-01-11 03:13:49

标签: javascript arrays set ecmascript-6

似乎没有一种简单而优雅的方法可以将Javascript Set转换为数组。

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

var setConvertedToArray = convertSetToArray(set);

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

map感觉正确,但Set原型只有forEach

呸:

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

任何人都知道将Set转换为数组的好方法吗?

2 个答案:

答案 0 :(得分:10)

一些方法:

[...set];
[...set.keys()];
[...set.values()];
Array.from(set);
Array.from(set.keys());
Array.from(set.values());

答案 1 :(得分:2)

您可以使用Array.from()方法返回数组中的数组,例如像Set

这样的对象

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

var setConvertedToArray = Array.from(set);

document.body.innerHTML = setConvertedToArray instanceof Array;