详解ES6中的 Set Map 数据结构学习总结


Posted in Javascript onNovember 06, 2018

ES6中的 Set 数据结构

ES6 新增了一种 Set 数据结构。它类似数组。 最重要的一点是 Set中的结构成员没有重复的, 可用这点 一行代码实现数组去重。 Set 本身是一个构造函数。通过 new Set() 来创建Set结构。

let arr1 = ['Hello', 'World', 'ES6']
  let set1 = new Set() 
  arr1.forEach(type => {
    set1.add(type)
  })

通过new Set创建一个Set结构。 forEach 遍历arr1数组。把每一项通过Set.prototype.add 方法向Set结构中添加成员。

Set 也可以接受一个数组作为参数。

let arr2 = [1,2,3,4,1,5,2]
  let set2 = new Set(arr2) 
  for (let type of set2) {
   console.log(type)
  }
  // 1
  // 2
  // 3
  // 4
  // 5

上面的new Set() 创建 Set 数据结构时, 将一个数组作为它的参数。最后通过 for of 遍历 set2。因为 结构成员没有重复, 所以打印 1 2 3 4 5

Set 接受的参数不会进行 类型转换 , new Set(5, '5') 这完全是两个值。

Set 实现数组去重

// 方法1 
  [...new Set([1,2,3,1,2])] // 1 2 3
  
  // 方法2
  Array.from(new Set([1,2,3,1,2])) // 1 2 3

都是通过向 new Set() 中传入一个数组, 利用 Set结构成员都是唯一的特性, 最后通过扩展运算符..., 或者ES6提供的一种将类数组转换为数组的方法 Array.from()。

Set 操作方法

  • Set.prototype.add(value) 向Set结构中添加一名成员, 返回值为Set结构
  • Set.prototype.delete(value) 删除一名成员, 返回值为布尔值。 true成功, false失败
  • Set.prototype.has(value) Set 成员是否存在, true为存在, false为不存在
  • Set.prototype.clear() 清空所有的成员
let arr3 = [7,8,9]
  let set3 = new Set(arr3)
  set3.add(10)
  set3.size() // 4
  set3.delete(8)
  set3.size() // 3
  set3.clear() // 0

Set 遍历方法

  • keys() 键名的遍历器
  • values() 键值的遍历器
  • entries() 键值对的遍历器,以数组形式返回
let arr4 = ['javascript', 'vue', 'node.js', 'typescript']
  let set4 = new Set(arr4) 
  
  // set.keys()
  for (let k of set4.keys()) {
   console.log(k)\
   // javascript
   // vue 
   // node.js
   // typescript
  } 

 // set.values()
 for (ket v of set4.values()) {
  console.log(v)
  // 和上面的set4.keys() 遍历的结果一样
 } 

 // set.entries()
 for (let e of set3.entries()) {
  console.log(e)
  // ['javascript', 'javascript']
  // ['vue', 'vue']
  // ['node.js', 'node.js']
  // ['typescript', 'typescript']
 }

可见, keys()和values() 遍历是一模一样的, 以后遍历使用keys()还是values()没有区别。entries 遍历返回的是数组, 分别是keys() values()结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery EasyUI 中文API Button使用实例
Apr 14 Javascript
JQuery datepicker 使用方法
May 20 Javascript
jquery foreach使用示例
Sep 12 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
JavaScript弹出对话框的三种方式
Mar 23 Javascript
Bootstrop实现多级下拉菜单功能
Nov 24 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
webpack实用小功能介绍
Jan 02 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
Nov 15 Javascript
详解Nuxt.js 实战集锦
Nov 19 Javascript
小程序实现页面顶部选项卡效果
Nov 06 #Javascript
Vue常用的几个指令附完整案例
Nov 06 #Javascript
vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错
Nov 06 #Javascript
100行代码实现一个vue分页组功能
Nov 06 #Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 #Javascript
Vue递归实现树形菜单方法实例
Nov 06 #Javascript
electron中使用bootstrap的示例代码
Nov 06 #Javascript
You might like
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
js表数据排序 sort table data
2009/02/18 Javascript
javascript 面向对象编程基础 多态
2009/08/21 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
python实现冒泡排序算法的两种方法
2018/03/10 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
如何使用Pytorch搭建模型
2020/10/26 Python
用Python制作音乐海报
2021/01/26 Python
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
情侣吵架检讨书
2014/02/05 职场文书
司仪主持词两篇
2014/03/22 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
工作调动申请报告
2015/05/18 职场文书
校园广播站开场白
2015/06/01 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技
Python实现双向链表基本操作
2022/05/25 Python