ES6提供了新的数据结构——Set与Map,Set本身是一个构造函数且成员的值是唯一的,没有重复的值!!!Set()是一个存储已排序的无重复元素的数据而Map()是一对数据Map()使用关键值Key来标识每一个成员且Map()的value的值是可以重复的。

var a = new Set([1,1,2,2,3,4,5]);
console.log([...a]); //[ 1, 2, 3, 4, 5 ]
console.log(a.size); //
  Set示例的方法有两大类:操作方法(增删查清)和遍历方法,下面就分别说下这两大类的方法
    第一大类:Set操作方法
      1.为Set添加值使用add()方法,add方法可以多次为set添加值但是如果添加两个相同的值则被默认为是一个值当然这也符合第一句话所说的set本身是一个构造函数且成员唯一,无重复的值!!!

var a = new Set();
a.add(1);
a.add(1).add(2);
console.log(a); //Set { 1, 2 }
console.log(a.size); //

      2.为Set删除某值使用delete()方法,该方法返回的是一个布尔值,表示是否删除成功。

var a = new Set();
a.add(1);
a.add(1).add(2);
console.log(a); //Set { 1, 2 }
console.log(a.size); //
a.delete(1);
console.log(a); //Set { 2 }
console.log(a.size); //

      3.判断一个参数是否为Set参数可以使用has()方法,该方法会返回一个布尔值。

var a = new Set();
a.add(1);
a.add(1).add(2);
console.log(a.has(1)); //true
console.log(a); //Set { 1, 2 }
console.log(a.size); //
a.delete(1);
console.log(a.has(1)); //false
console.log(a); //Set { 2 }
console.log(a.size); //

      4.如果想清除所有Set的值那么使用clear()方法,该方法无返回值。

var a = new Set([1,2]);
console.log(a.size); //
a.clear();
console.log(a); //Set {}
console.log(a.size); //

    第二大类:Set遍历操作,一共有四种方法,其实这四种方法本质上就是一个key:value对。

let set = new Set(['red', 'green', 'blue']);
for ( let item of set.keys() ){
console.log(item);
} // red green blue
for ( let item of set.values() ){
console.log(item);
} // red green blue
for ( let item of set.entries() ){
console.log(item);
} // ["red", "red"] ["green", "green"] ["blue", "blue"]
set.forEach(function (values) {
console.log(values);
}); //red green blue

  Map示例的方法有两大类:操作方法(增删查清)和遍历方法,下面就分别说下这两大类的方法。

    第一大类:Map操作方法(与Set方法类似但是没有add只有get方法读取Map)

var map = new Map([["name", "张三"], ["title", "Author"]]);
console.log(map.size); //
console.log(map.has("name")); //true
console.log(map.has("age")); //false
console.log(map.get("name")); //张三
console.log(map.delete("name")); //true
console.log(map.has("name")); //false
console.log(map.size); //
map.clear();
console.log(map.get("age")); //undefined
console.log(map.size); //

    第二大类:Map遍历操作

var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
for (var key of myMap.keys()) {
console.log(key); //0 1
}
for (var value of myMap.values()) {
console.log(value); //zero one
}
for (var item of myMap.entries()) {
console.log(item[0] + " = " + item[1]); //0 = zero 1 = one
}
myMap.forEach(function(value, key) {
console.log(key + " = " + value); }, myMap); //0 = zero 1 = one

  最后简单的说下weakset与weakmap,他与set类似的有WeakSet()该方法无法遍历也没有size属性,他的成员只能是对象而不能是其他类型的值,他有三个方法.add()、.has()和.delete()方法,顺便说下如果WeakSet()方法没有被其他对象所引用那么就会被垃圾回收,与他类似的有WeakMap()。

ES6之Set方法与Map方法的更多相关文章

  1. es6的map()方法解释

    es6的map()方法解释   map方法的作用不难理解,即“映射”,也就是原数组被“映射”成对应新数组.下面这个例子是数值项求平方: var data = [1, 2, 3, 4]; var arr ...

  2. js 自带的 map() 方法

    1. 方法概述 map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. 2. 例子 2.1 在字符串中使用map 在一个 String  上使用 map 方法获取字符串中 ...

  3. 模拟jquery实现each方法和map方法

    ********************each方法********************** function each( obj, cbk ) { /* * 实现思路: * 1.首先却分传入进来 ...

  4. map() 方法

    1. 方法概述 map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. 2. 例子 2.1 在字符串中使用map 在一个 String 上使用 map 方法获取字符串中每 ...

  5. 数组map方法与如何使用ES5实现

    数组map方法与如何使用ES5实现 JavaScript Array map() 方法 定义 map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值. map() 方法按照原始数 ...

  6. Mapper类/Reducer类中的setup方法和cleanup方法以及run方法的介绍

    在hadoop的源码中,基类Mapper类和Reducer类中都是只包含四个方法:setup方法,cleanup方法,run方法,map方法.如下所示: 其方法的调用方式是在run方法中,如下所示: ...

  7. ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries...

    2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法,  后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法:  1.         定义变 ...

  8. 关于ES3、ES5、ES6以及ES7所有数组的方法(api)的总结

    起因:工作用经常用到操作数组的方法,这里进行一下总结,我尽量以简洁的语言概括每个方法(api)的作用.如果您想快速定位,可以Control+F 然后搜相应的方法即可定位 :) ES3的数组方法 joi ...

  9. 【Javascript】JS遍历数组的三种方法:map、forEach、filter

    前言 近一段时间,因为项目原因,会经常在前端对数组进行遍历.处理,JS自带的遍历方法有很多种,往往不加留意,就可能导致知识混乱的现象,并且其中还存在一些坑.前端时间在ediary中总结了js原生自带的 ...

随机推荐

  1. auxblogcms1.0.6|代码审计

    这周的审计任务,两天前的任务呀~拖延症呀~ 这次审计一个博客----auxblogcms1.0.6,网上也有所记载,我下面会做个总结. axublog是一款php个人博客系统,小巧强大的PHP+MyS ...

  2. python实战===如何优雅的打飞机

    这是一个打飞机的游戏,结构如下: 其中images中包含的素材为 命名为alien.png    命名为ship.png 游戏效果运行是这样的: 敌军,也就是体型稍微大点的,在上方左右移动,并且有规律 ...

  3. APP加固技术历程及未来级别方案:虚机源码保护

    传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决.而下一代加固技术-虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强 ...

  4. linux 常用命令详解

    常见Linux目录名称:/ 虚拟目录的根目录.通常不会在这里存储文件/bin 二进制目录,存放许多用户级的GNU工具/boot 启动目录,存放启动文件/dev 设备目录,Linux在这里创建设备节点/ ...

  5. HTTP 2 新特性

    HTTP 2 新特性 HTTP/2 不是彻底的重写http协议,HTTP methods,status codes 和 语义化都是相同的,并且它应该使用和HTTP/1.x 相同的api 表示协议. H ...

  6. 51Nod--1049最大子段和

    1049 最大子段和 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 N个整数组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a ...

  7. SVN如何commit(提交)项目代码

    在本地代码做出变更之后,我们就需要通过svn commit命令提交到远程服务端 工具/原料   SVN客户端 方法/步骤   选中需要更新的代码文件夹或目录,点击右键,选择"Tortoise ...

  8. Linux积累 命令之cat和wc

    cat主要有三大功能: 1.一次显示整个文件. $ cat   filename 2.从键盘创建一个文件. $ cat  >  filename 只能创建新文件,不能编辑已有文件. 3.将几个文 ...

  9. mysql基础知识点

    /* 启动MySQL */net start mysql /* 连接与断开服务器 */mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */mysqld ...

  10. 关于websorm卡顿的问题

    要是电脑不卡的话,使用webstorm真可谓是一种享受,但是随着项目的开展,文件逐渐增大,webstorm自然也会出现卡顿(毕竟缺点就是吃内存),这个时候我们可以增加Xms设置 Start1: 1 找 ...