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. less简述

       什么是less? 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, ...

  2. 2810:完美立方-poj

    2810:完美立方 总时间限制:  1000ms 内存限制:  65536kB 描述 形如a3= b3 + c3 + d3的等式被称为完美立方等式.例如123= 63 + 83 + 103 .编写一个 ...

  3. 从Proxy.newInstance出发

    写在前面 本篇博客是基于对动态代理,java的重写,多态特性了解的基础上对于源码的阅读,先提出几个问题 1.从静态代理变成动态代理需要解决两个问题,如何动态实现被代理类的接口并摘取接口中的方法,如果动 ...

  4. QuickTime视频解析问题

    在QuickTime中可以解析出视频并播放视频,解析的格式后缀名为.mov,之后将该视频导入到Unity Project中,显示未解析到视频文件,本来应该会自动生成MovieTexture材质,但是并 ...

  5. expressjs 支持umeditor 的图片上传

    umedtor 的文件上传 是form 提交. 请求的header Accept: text/html,application/xhtml+xml,application/xml;q=0.9,imag ...

  6. hdoj 4325 Flowers 线段树+离散化

    hdoj 4325 Flowers 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4325 思路: 直接线段树,按照花的开放区间的大小建树,要注意虽然 ...

  7. codeforces 893B Beautiful Divisors 打表

    893B Beautiful Divisors 思路: 打表 代码: #include <bits/stdc++.h> using namespace std; #define _for( ...

  8. Nginx动静分离实现

    Nginx动静分离实现: Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache.Tomcat及IIS等来实现,这里就以Ng ...

  9. c++用类写栈和队列的简单基本操作(实验)

    继续更文.这次用类来写栈和队列,都是用数组模拟的: 以下是栈和队列的定义: 然后分别是栈和队列的类: 完整代码贴上: 栈 //使用类来定义栈 class ZHAN { public: STACK s; ...

  10. 2.python的文件类型、变量数值和字符串练习

    1.python的文件类型 .源代码 -python 源代码文件以"py"为扩展名,由python程序解释,不需要编译. 2.字节代码(编译的) -python源码文件经编译后生成 ...