如何将Set转换为Array?

2023-05-16

本文翻译自:How to convert Set to Array?

Set seems like a nice way to create Arrays with guaranteed unique elements, but it does not expose any good way to get properties, except for generator [Set].values, which is called in an awkward way of mySet.values.next() . Set似乎是一种创建具有保证唯一元素的Arrays的好方法,但它没有暴露任何获取属性的好方法,除了生成器[Set] .values,它以mySet.values.next()的笨拙方式mySet.values.next()

This would have been ok, if you could call map and similar functions on Sets. 如果您可以在集合上调用map和类似函数,那就没问题了。 But you cannot do that, as well. 但你也不能这样做。

I've tried Array.from , but seems to be converting only array-like (NodeList and TypedArrays ?) objects to Array. 我尝试过Array.from ,但似乎只是将类似数组(NodeList和TypedArrays?)的对象转换为Array。 Another try: Object.keys does not work for Sets, and Set.prototype does not have similar static method. 另一个尝试: Object.keys不适用于Sets,而Set.prototype没有类似的静态方法。

So, the question: Is there any convenient inbuilt method for creating an Array with values of a given Set ? 所以,问题是否有任何方便的内置方法来创建具有给定Set值的数组? (Order of element does not really matter). (元素的顺序并不重要)。

if no such option exists, then maybe there is a nice idiomatic one-liner for doing that ? 如果没有这样的选择,那么也许有一个很好的惯用的单行代码呢? like, using for...of , or similar ? 比如, for...of或类似的?


#1楼

参考:https://stackoom.com/question/1MD4u/如何将Set转换为Array


#2楼

if no such option exists, then maybe there is a nice idiomatic one-liner for doing that ? 如果没有这样的选择,那么也许有一个很好的惯用的单行代码呢? like, using for...of, or similar ? 比如,用于...或类似的?

Indeed, there are several ways to convert a Set to an Array : 实际上,有几种方法可以将Set转换为数组 :

using Array.from 使用Array.from

let array = Array.from(mySet);

Simply spreading the Set out in an array 简单地spreading Set spreading为数组

let array = [...mySet];

The old fashion way, iterating and pushing to a new array (Sets do have forEach ) 旧的时尚方式,迭代并推送到一个新的数组(集合有forEach

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

Previously, using the non-standard, and now deprecated array comprehension syntax: 以前,使用非标准,现在不推荐使用的数组解析语法:

let array = [v for (v of mySet)];

#3楼

via https://speakerdeck.com/anguscroll/es6-uncensored by Angus Croll 通过https://speakerdeck.com/anguscroll/es6-由Angus Croll提供

It turns out, we can use spread operator: 事实证明,我们可以使用spread运算符:

var myArr = [...mySet];

Or, alternatively, use Array.from : 或者,使用Array.from

var myArr = Array.from(mySet);

#4楼

Assuming you are just using Set temporarily to get unique values in an array and then converting back to an Array, try using this: 假设您只是暂时使用Set来获取数组中的唯一值,然后转换回Array,请尝试使用:

_.uniq([])

This relies on using underscore or lo-dash . 这依赖于使用下划线或lo-dash 。


#5楼

Perhaps to late to the party, but you could just do the following: 也许到了晚会,但你可以做到以下几点:

const set = new Set(['a', 'b']);
const values = set.values();
const array = Array.from(values);

This should work without problems in browsers that have support for ES6 or if you have a shim that correctly polyfills the above functionality. 这应该在支持ES6的浏览器中没有问题,或者如果你有一个正确填充上述功能的垫片。

Edit : Today you can just use what @c69 suggests: 编辑 :今天你可以使用@ c69建议的内容:

const set = new Set(['a', 'b']);
const array = [...set]; // or Array.from(set)

#6楼

使用spread运算符可以获得所需的结果

var arrayFromSet = [...set];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将Set转换为Array? 的相关文章

  • ModSecurity介绍

    ModSecurity介绍 一 什么是ModSecurity xff1f 1 ModSecurity是一个入侵探测与阻止的引擎 xff0c 它主要是用于Web应用程序所以也可以叫做Web应用程序防火墙 2 ModSecurity是一个开源
  • 2.HAL库-STM32的定时器和串口综合训练

    关于sprintf 函数的用法 sprintf xff0c 指的是字符串格式化函数 xff0c 把格式化的数据写入某个字符串中 int sprintf char string char format argument 引入头文件 inclu
  • 前端数据可视化插件:Highcharts、Echarts和D3(区别)

    前端数据可视化插件有很多 xff0c 但我用过的只有Highcharts xff08 https www hcharts cn xff09 Echarts xff08 http echarts baidu com xff09 和D3 xff
  • Docker入门(二) - 容器内访问宿主机硬件资源

    https blog csdn net tianhuanqingyun article details 91580778 边缘设备而言 xff0c 在支持容器化运行的条件下 xff0c 需要在容器内获取宿主机的硬件资源 xff0c 完成与宿
  • angularjs笔记

    基础概念 ng app 指令告诉 AngularJS xff0c 元素是 AngularJS 应用程序 的 34 所有者 34 ng model 指令把输入域的值绑定到应用程序变量 name ng bind 指令把应用程序变量 name 绑
  • virtualbox已有虚拟硬盘扩容(不修改原有数据)

    virtualbox为ubuntu添加虚拟硬盘 大概的步骤如下 xff1a 在virtualbox上注册一个虚拟硬盘使用fdisk对硬盘进行分区mkfs ext4格式化硬盘修改uuid VBoxManage internalcommands
  • react资源

    MUI The React UI library for faster and easier web development React Table Lightweight and extensible data tables for Re
  • gitbook之node版本问题

    执行gitbook build出现错误 xff0c 执行gitbook serve也是会出错 错误如下 xff1a gitbook build usr local lib node modules gitbook cli node modu
  • Arduino Uno安装设备时,出现了一个错误,这个INF中的服务安装段落无效

    问题 xff1a 在windows系统下 xff0c Uno安装设备时 xff0c 出现了一个错误 xff0c 这个INF中的服务安装段落无效 原因 xff1a 缺少系统文件 解决方案 xff1a 1 先下载 xff1a usbser zi
  • Vmware Unity模式

    ubuntu 12 04 之Vmware Unity模式 安装VMware Toolsudo add apt repository ppa gnome3 team gnome3sudo apt get install gnome shell
  • 状态机实现的三种方法-C语言

    1 参考 xff1a https www cnblogs com aaronLinux p 5705457 html 2 转载 xff1a http kb cnblogs com page 528972 3 参考 xff1a FSM TCP
  • 错误:try using -rpath or -rpath-link

    在使用到动态库的时候 xff0c 出现错误如下 xff1a arm linux bin span class hljs keyword ld span warning libssl span class hljs preprocessor
  • git push不用输入密码(方法一)-git-credentials

    install git credentials sh 命令步骤 xff1a touch git credentialsecho 34 http username password 64 localhost 34 gt gt git cred
  • 十、如何使用perf工具分析java程序

    问题 1 xff1a 使用 perf 工具时 xff0c 看到的是 16 进制地址而不是函数名 在 CentOS 系统中 xff0c 使用 perf 工具看不到函数名 xff0c 只能看到一些 16 进制格式的函数地址 只要你观察一下 pe
  • vins环境配置(一):kalibr标定工具箱安装

    相机和IMU标定 xff1a kalibr工具包 xff0c r os环境 Indigo xff0c 在jade版本中未曾编译通过 xff0c 应该是自己的方式不对 xff0c 有待继续尝试 xff09 在github中查找kalibr项目
  • msckf_vio使用记录

    使用环境 xff1a ubuntu14 04 indigo indigo版本的ros默认支持的是opencv2 4 8 xff0c 其带的库cv bridge依赖于opencv2 但是 xff0c msckf vio使用的是Ubuntu 1
  • 无人机姿态解算:四元数及其与欧拉角的转换

    无人机姿态解算 xff1a 四元数及其与欧拉角的转换 引言 xff1a 获得无人机飞行时的飞行姿态对于无人机稳定控制来说至关重要 无人机主要通过传感器数据融合来进行状态估计 xff0c 常用于无人机的传感器包括 xff1a MPU xff0
  • (纯干货)备战“金3银4”,拿下这101道面试题“10拿9稳””!

    前言 xff1a 马上就到了 金9银10的 面试季 xff0c 在这里作者给各位整理了一些大厂常用的面试题 xff0c 希望能对各位有所帮助 正文 xff1a 1 问 xff1a 你在测试中发现了一个bug xff0c 但是开发经理认为这不
  • 用Excel分析音视频同步

    声明 xff1a 这里主要介绍如何运用Excel来分析音视频是否同步 xff0c 希望可以对大家有所帮助 介绍 xff1a 学习音视频就一定要知道做音视频同步 xff0c 而现在我们来分析音视频同步的工具也是有的 xff0c 比如easyI
  • 使用VLC 在PC端搭建RTP环境

    声明 xff1a 本文是我在工作中遇到的关于环境搭建问题后的一些总结 xff0c 希望可以对你有所帮助 介绍 xff1a 搭建方法 xff1a 1 xff09 搭建 VLC 软件 xff0c 点击媒体菜单 xff0c 选择 流 选项 xff

随机推荐

  • 使用VLC 在PC端搭建RTSP环境

    声明 xff1a 本文是我在工作中遇到的关于环境搭建问题后的一些总结 xff0c 希望可以对你有所帮助 介绍 xff1a 搭建方法 xff1a 1 xff09 搭建 VLC 软件 xff0c 点击媒体菜单 xff0c 选择 流 选项 xff
  • 2020总结

    2020年可以说是我开始工作的第二年了 在第一年中我可以说了解了工作和组里的基本情况 xff0c 而这第二年就开始真正的加深学习了 还是以时间线一点点的慢慢讲吧 春节前我们一边工作一边准备年会 我们公司有个惯例那就是让每年最新入职的员工来主
  • 嵌入式Linux——网卡驱动(1):网卡驱动框架介绍

    声明 xff1a 文本是看完韦东山老师的视频和看了一些文章后 xff0c 所写的总结 我会尽力将自己所了解的知识写出来 xff0c 但由于自己感觉并没有学的很好 xff0c 所以文中可能有错的地方敬请指出 xff0c 谢谢 在介绍本文之前
  • ROS发布订阅的消息的种类及使用

    1 消息 std msgs 的种类 在 opt ros melodic include std msgs文件夹中查询 或参考 xff1a https www itdaan com tw b30f2309fe4b1b2d5993c8ea0cb
  • SSD1306部分命令

    命令描述 1 基础命令 1 1 为页地址模式设置列低半字节的开始地址 xff08 00h 0Fh xff09 这个命令专门为8位列地址的低半字节设置以通过页地址模式显示RAM中的数据 而每一个数据使用后列地址会自动增加 请参考表格9 1的部
  • 嵌入式Linux——IIC总线驱动(3):IIC驱动OLED外设

    简介 xff1a 本文主要介绍在jz2440开发板上驱动OLED外设 xff0c 使其显示我们在应用层输入的语句 而同时我将该文分成了两部分 xff0c 第一部分讲解i2c总线的实现 xff0c 而第二部分讲解在i2c总线实现后 xff0c
  • 嵌入式Linux——RTC驱动(1):RTC框架分析

    简介 xff1a 本文通过分层的方式介绍RTC驱动 xff0c 通过分析RTC在不同层次中所做的不同工作 xff0c 以及各个层次之间的关系来了解RTC驱动框架 本文分为两部分 xff0c 第一部分总的介绍RTC框架 xff0c 而第二部分
  • 嵌入式Linux——DMA:在内核中简单使用DMA实现内存中数据传递

    简介 xff1a 本文主要介绍在内核中简单使用DMA实现内存数据传递 由于本篇文章中没有介绍与框架相关的程序 xff0c 只是使用字符设备来操作DMA xff0c 同时也没有抽象的层次 xff0c 因此本文中代码分析部分就相对简单 但我还是
  • 嵌入式Linux——uevent机制:uevent原理分析

    简介 xff1a 本文主要介绍uevent机制是什么 xff0c 并通过代码分析使用uevent机制生成设备节点的过程 而本文将分为两部分 xff0c 第一部分我们介绍一些预备知识和uevent的原理 xff0c 而第二部分 通过代码介绍使
  • 嵌入式Linux——kmsg:分析/proc/kmsg文件以及写自己的/proc/mymsg

    简介 xff1a 本文主要分析 proc kmsg文件的形成过程以及使用cat proc kmsg查看log buf中的信息时所要经历的代码 并结合上面的分析写自己的 proc mymsg和myprintk Linux内核 xff1a li
  • 嵌入式Linux——学习经历

    简介 xff1a 本文主要介绍我学习嵌入式的经历 并结合自身的经验希望可以对大家有所帮助 视频及教材 xff1a 郭天祥相关视频及教材 xff0c 天狼星相关视频及教材 xff0c 野火迷你相关视频及教材以及韦东山100ask官网所介绍的视
  • 指针简介(3)—— 指针函数与函数指针

    声明 xff1a 本文是阅读周立功老师的程序设计与数据结构后所写 xff0c 很多内容其实是书中的内容 xff0c 所以如果您想了解更多这方面的知识 xff0c 您可以阅读这本书 在前面一节我们简单介绍了指针 数组 指针数组以及数组指针 而
  • Docker常用操作命令

    成功安装Docker之后 启动Docker 如果遇到启动问题请参考 https blog csdn net w1316022737 article details 83692701 下来简单介绍Docker容器常用操作命令 安装操作MySQ
  • DIY 自己的路由器系统

    sudo apt get install subversion build essential libncurses5 dev zlib1g dev gawk git ccache gettext libssl dev xsltproc z
  • (ROS)解决gazebo闪退和tk窗口不显示问题

    问题1 xff1a 运行gazebo的时候 xff0c gazebo窗口闪退 解决办法 xff1a 1 删除gazebo xff0c 重新安装适合的版本然后再重新运行 或者 2 关闭加速3D图形 xff08 需要关闭虚拟机 rostopic
  • 【常见的优化算法介绍】

    常见的优化算法介绍 1 批量梯度下降算法 xff08 batch gradient descent BGD xff09 每次迭代都需要把所有样本都送入 xff0c 这样的好处是每次迭代都顾及了全部的样本 xff0c 做的是全局最优化 但是有
  • 树莓派无显示屏 ssh 连接的方法

    一般来说 xff0c 树莓派买回来很少配置显示屏 xff0c 通常只通过ssh远程登陆来控制树莓派 而树莓派通过ssh连接有三种方法 一 通过网线将树莓派连接到路由器上 这个方法成功率极高 xff0c 我一般都是采用这种方法 1 允许ssh
  • AIRSIM 中文使用手册-2021/4/6

    AIRSIM 中文使用手册 截至2021 4 6 前言1 HomeHome日志变更 2 获取AIRSIM下载二进制文件在Windows上构建在Linux上构建Linux上的DockerAzure上的AirSim开发环境自定义虚幻环境AirS
  • 最新研究:AI已可诊断50种眼疾,1.2秒内确认神经系统疾病

    本文由人工智能观察编译 译者 xff1a Sandy 近年来 xff0c 人工智能技术与医疗健康领域的融合不断加深 xff0c 且在科技巨头与资本巨头积极布局的努力下 xff0c 智能医疗正在不断取得新的突破 而根据 自然医学 xff08
  • 如何将Set转换为Array?

    本文翻译自 xff1a How to convert Set to Array Set seems like a nice way to create Arrays with guaranteed unique elements but i