详解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 相关文章推荐
js 无提示关闭浏览器页面的代码
Mar 09 Javascript
Javascript 面向对象 对象(Object)
May 13 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
May 12 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
Dec 23 Javascript
jquery分割字符串的方法
Jun 24 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
javascript倒计时效果实现
Nov 12 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
Node.js成为Web应用开发最佳选择的原因
Feb 05 Javascript
javascript实现贪吃蛇小练习
Jul 05 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 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
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
浅析return false的正确使用
2013/11/04 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
javascript实现简易计算器
2017/02/01 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
Express 配置HTML页面访问的实现
2020/11/01 Javascript
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
Python datetime包函数简单介绍
2019/08/28 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
python自动下载图片的方法示例
2020/03/25 Python
python开发前景如何
2020/06/11 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
Servlet面试题库
2015/07/18 面试题
意向协议书范本
2014/04/23 职场文书
应用心理学专业求职信
2014/08/04 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
二审代理词范文
2015/05/25 职场文书
小学教师见习总结
2015/06/23 职场文书
企业培训简报范文
2015/07/20 职场文书
python之基数排序的实现
2021/07/26 Python