当前位置: 首页 > 知识库问答 >
问题:

如何将集合转换为数组?

景修杰
2023-03-14

Set似乎是一种创建具有保证唯一元素的数组的好方法,但它不提供任何获取属性的好方法,除了generator[Set].values,它以myset.values.next()的尴尬方式调用。

如果您可以在集合上调用map和类似的函数,那么这是可以的。但你也不能那样做。

我尝试过array.from,但似乎只转换了类数组(NodeList和TypedArrays?)对象设置为数组。再试一次:object.keys对Sets不起作用,set.prototype没有类似的静态方法。

那么,问题是:是否有任何方便的内置方法来创建具有给定集合的值的数组?(元素顺序并不重要)。

如果不存在这样的选项,那么也许有一个很好的惯用的一行式程序来做这件事?例如,使用for...of或类似的?

共有2个答案

淳于兴朝
2023-03-14

通过https://speakerdeck.com/anguscroll/es6-未经Angus Croll审查

原来,我们可以使用spread运算符:

var myArr = [...mySet];

或者,使用array.from:

var myArr = Array.from(mySet);
太叔坚
2023-03-14

如果不存在这样的选项,那么也许有一个很好的惯用的一行式程序来做这件事?像,用来...的,或者类似的?

实际上,有几种方法可以将集合转换为数组:

使用array.from

let array = Array.from(mySet);

简单地扩展数组中的集合

let array = [...mySet];

传统的方式,迭代并推送到一个新数组(集合确实有foreach)

let array = [];
mySet.forEach(v => array.push(v));

以前,使用非标准的、现在已不推荐使用的数组理解语法:

let array = [v for (v of mySet)];
 类似资料:
  • 如何将集合转换为数组?给出了三个关于将集合转换为数组的答案,这些答案目前都无法在Chrome浏览器中使用。 假设我有一个简单的集合 我可以迭代我的变量并将元素添加到一个空数组中 但是,还有其他更广泛的浏览器支持的方法吗?

  • 所以我试图生成一个数组,其中填充了唯一的随机整数,我发现用arraylist来实现这一点是最有效的方法。 现在我试着使用但我不太确定括号里应该放什么,也不确定这是否真的能起作用。有没有其他转换方法,因为我不能简单地通过。

  • 现有两个名为getDetails(…)的方法 。一个需要至少一个必需参数,另一个需要一个集合(不验证集合的内容/大小)。 问题是集合有时会作为空传递,并且根据我的业务案例,我总是期望至少传递一个值。因此,我需要将该方法设为私有,它接受集合。 我计划将下面的方法作用域设置为private,这样调用者就不会使用零属性调用此方法。 调用方方法之一是将集合对象传递给下面的getDetails, id.ge

  • 我想在Scala中映射Java数组。对于普通的Java集合,我知道我可以使用 但是,对于阵列,此转换不起作用: 那么,如何将Java数组转换为Scala集合、iterable或可以映射的对象呢?

  • 运行代码时,出现以下错误: 导致的代码是: 但当我这样做时: 我得到以下输出: [1,7,15] 我不明白为什么我不能将其转换为整数[]。有什么建议吗?

  • 在数据库中,我有以下JSON字符串: 我在AdditionalData中得到上面的JSON字符串(这是我代码中的一个属性)。 但是我需要将JSON列表转换为JSON。我没有任何特定的模型将列表映射为JSON格式。该JSON字符串可能不同(嵌套或更嵌套)。 基本上,我需要将JSON字符串转换为JSON数据,我需要在POSTMAN中显示