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. swaggerui在asp.net web api core 中的应用

    Swaggerui 可以为我们的webapi提供美观的在线文档,如下图: 实现步骤: NuGet Packages  Install-Package Swashbuckle.AspNetCore 在s ...

  2. JavaScript学习笔记(十三)——生成器(generator)

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  3. JQuery之事件冒泡

    JQuery 提供了两种方式来阻止事件冒泡. 方法一:event.stopPropagation(); $("#div1").mousedown(function(event){  ...

  4. OC的内存管理和@class

    1. 基本原理 1. 什么是内存管理 ➢ 移动设备的内存极其有限,每个app所能占用的内存是有限制的 ➢ 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间.比如回收 ...

  5. fragment显示 Binary XML file line #12: Error inflating class fragment 错误

    问题 最近换了新机子,今天在静态用fragment时突然发现闪退,一看显示 Binary XML file line #12: Error inflating class fragment 错误 后面 ...

  6. Beautifulsoup分解

    from urllib.request import Request, ProxyHandler from urllib.request import build_opener from bs4 im ...

  7. Servlet之过滤器(Filter)和监听器(Listener)

    过滤器 过滤器是一个java组件,可以拦截发送至某个servelet,jsp页面或静态页面的请求,可以在响应发送到客户之前进行拦截 工作原理: 过滤器类必须实现 Filter 接口,包含的方法如下: ...

  8. Numpy入门 - 行列式转置

    本章实例讲解如何将一个数组对象进行转置,我们可以使用.T将行列数据颠倒过来,看下面的代码: import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6 ...

  9. [LeetCode] 74 Search a 2D Matrix(二分查找)

    二分查找 1.二分查找的时间复杂度分析: 二分查找每次排除掉一半不合适的值,所以对于n个元素的情况来说: 一次二分剩下:n/2 两次:n/4 m次:n/(2^m) 最坏情况是排除到最后一个值之后得到结 ...

  10. 深入理解 Android 消息机制原理

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:汪毅雄 导语: 本文讲述的是Android的消息机制原理,从Java到Native代码进行了梳理,并结合其中使用到的Epoll模型予以介 ...