详解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模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
Aug 21 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
Dec 20 Javascript
js格式化输入框内金额、银行卡号
Feb 01 Javascript
基于jQuery实现动态搜索显示功能
May 05 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
Oct 10 Javascript
详解如何实现一个简单的Node.js脚手架
Dec 04 Javascript
vue文件运行的方法教学
Feb 12 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 Javascript
google广告之另类js调用实现代码
Aug 22 Javascript
微信小程序实现自定义底部导航
Nov 18 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安装全攻略:APACHE
2006/10/09 PHP
用文本文件制作留言板提示(上)
2006/10/09 PHP
杏林同学录(八)
2006/10/09 PHP
如何删除多级目录
2006/10/09 PHP
twig模板常用语句实例小结
2016/02/04 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
js实现消灭星星(web简易版)
2020/03/24 Javascript
vue实现购物车案例
2020/05/30 Javascript
wxpython 学习笔记 第一天
2009/03/16 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
销售活动策划方案
2014/08/26 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
爱国电影观后感
2015/06/19 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
《失物招领》教学反思
2016/02/20 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android