详解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 api参考 visualjquery 中国线路 速度快
Nov 30 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
Oct 01 Javascript
javascript中强制执行toString()具体实现
Apr 27 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 Javascript
jquery实现图片上传前本地预览功能
May 10 Javascript
js计算系统当前日期是星期几的方法
Jul 14 Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
Sep 26 Javascript
Vue 让元素抖动/摆动起来的实现代码
May 31 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
Oct 12 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 Javascript
关于Vue中的options选项
Mar 22 Vue.js
小程序实现页面顶部选项卡效果
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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php 将excel导入mysql
2009/11/09 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
js 判断 enter 事件
2009/02/12 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
ajax级联菜单实现方法实例分析
2016/11/28 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
基于JQuery的Ajax方法使用详解
2017/08/16 jQuery
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
Python实现全角半角字符互转的方法
2016/11/28 Python
Django如何实现内容缓存示例详解
2017/09/24 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
Python pip配置国内源的方法
2020/02/14 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
pygame实现弹球游戏
2020/04/14 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
机械专业应届生求职信
2013/09/21 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
如何撰写创业策划书
2019/06/27 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
浅谈MySQL中的六种日志
2022/03/23 MySQL
Python进程池与进程锁之语法学习
2022/04/11 Python