将Javascript中的`Set`转换成数组

5

似乎没有一种简单而优美的方法将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 转换为数组?


或者更好的方法 [如何将Set转换为Array?] (https://dev59.com/EmIj5IYBdhLWcg3wnmXA) - Tushar
2个回答

14

一些实现方法:

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

3
你可以使用 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;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接