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. linux下高可用LVS搭建及配置方法

    一,安装与配置ipvsadm   ipvsadm --help  #查询是否安装成功     二,配置Director Server服务器 1. ifconifg eth0:0 183.61.87.4 ...

  2. 《Metasploit魔鬼训练营》第三章

    p85 使用nmap探测目标主机的操作系统版本那里有问题,我探测不了NAT服务器的! msf > nmap -sT 10.10.10.254 [*] exec: nmap -sT 10.10.1 ...

  3. LKD: Chapter 8 Bottom Halves and Deferring Work

    In 2.6.x, there are 3 mechanisms for implementing a bottom half: softirqs, tasklets and work queues. ...

  4. android shape 大全 (转)

    1. 各属性的配置语法 在项目 res/drawable 文件夹中创建一个以 shape 为根节点的 XML 文件,基本语法如下: <?xml version="1.0" e ...

  5. 邻里街坊 golang入坑系列

    如果要追新或者怀旧,就点击https://andy-zhangtao.gitbooks.io/golang/content/ . 博客园里面的文章基本和gitbook上面是保持同步的. 这几天看了几集 ...

  6. 契约测试框架-Pact实践

    在前一篇博客中我们讲到契约测试是什么,以及它能给我们软件交付带来什么价值,本次将介绍一个开源的契约测试框架Pact,它最初是用ruby语言实现的,后来被js,C#,java,go,python 等语言 ...

  7. 逆向实用干货分享,Hook技术第二讲,之虚表HOOK

    逆向实用干货分享,Hook技术第二讲,之虚表HOOK 正好昨天讲到认识C++中虚表指针,以及虚表位置在反汇编中的表达方式,这里就说一下我们的新技术,虚表HOOK 昨天的博客链接: http://www ...

  8. PHP面向对象-----魔术方法

    PHP面向对象-----魔术方法 __get($name)--触发时机:当调用一个不访问的成员属性的时候,会自动触发,可以利用这个方法来完成对不可调用的属性进行调用,但是不能设置值 ___set($n ...

  9. Linux学习之在搭建java开发环境

    首先,在官网上下载你需要的JDK 然后 解压包  tar -zxvf 包名 配置环境变量 vim /etc/profile 如果权限不够,就使用sudo vim /etc/profile 在profi ...

  10. Maven - Maven基础

    1-下载及安装 1.1 - Maven - 项目管理利器 http://maven.apache.org/ Apache组织的开源项目. Maven是一个基于POM(Project Object Mo ...