1.Symbol:

Symbol中文意思“象征”

Symbol:这是一种新的原始类型的值,表示独一无二的值(可以保证不与其它属性名冲突)
Symbol()函数前面不能使用new,因为生成的Symbol(下面指s)是一个原始类型的值,不是对象
 let s=Symbol()
console.log(typeof s)//symbol
 
Symbol可以接受一个字符串作为参数,作为对Symbol的描述
 let s1=Symbol('s1')
let s2=Symbol('s1')
//Symbol是独一无二的值,所以进行比较返回的永远是false
console.log(s1===s2)
Symbol的主要运用场景之一对象属性名不会产生覆盖
 let name1=Symbol()
let obj={
name1:'apple',//此处name1是字符串
[name1]:'blue'//Symbol的name1在对象中必须用中括号括起来,否则被认为是字符串
}
console.log(obj.name1,obj['name1'],obj[name1])//前面两种是获取apple写法,后面是获取Symbol(即blue)的写法

2.Set:新的数据结构,类似数组,但是成员的值是唯一的(所以可以用来去重)

Set本身是一个构造函数
 console.log(new Set([1,2,3,2,3]))
let a=new Set();//此处加上分号,因为下面这行代码以[]开头
[1,2,3,2,3,'2','3'].forEach(element => {
a.add(element)
});
//此处说明Set内部使用的是严格相等运算符===
console.log(a)//Set(5) {1, 2, 3, "2", "3"}
for(let i of a){
console.log(i,typeof i)
}
实际上Set函数接收的参数不仅仅是数组,是可迭代(iterable)的数据结构【类似Python】
 
同时注意:两个空对象不严格相等(引用的内存地址不同),所以Set里面可以加入多个空对象
 console.log({}==={})
let b=new Set()
b.add({})
b.add({})
console.log(b,b.size)//Set(2) {{…}, {…}} 2
 
Set实例方法add(value),delete(value),has(value),clear()
Set实例属性Set.prototype.constructor(默认就是Set本身)    Set.prototype.size:Set包含元素个数
 let c=new Set()
c.add(1).add(2).add(3).add(2)
console.log(c)//Set(3) {1, 2, 3}
c.delete(2)
console.log(c)//Set(2) {1, 3}
console.log(c.has(2))//false
c.clear()//清空所有值
console.log(c)//Set(0) {}

3.Map"值对值"的对应 对比传统的对象 "字符串对值"的对应

 let m=new Map([
[1,10],
[true,'100']
])
console.log(m)//Map(2) {1 => 10, true => "100"} console.log(m.size)//
console.log(m.has(1))//true
console.log(m.get(true))//
m.set(1,100)
console.log(m)//Map(2) {1 => 100, true => "100"}
也就是说Map的键不像对象的键只是字符串map的键可以是字符串,布尔值,数值等类型
Map更符合hash结构
 

es6(四):Symbol,Set,Map的更多相关文章

  1. ES6中Set 和 Map用法

    JS中Set与Map用法 一.Set 1.基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. ...

  2. es6的Set和Map数据结构

    Set 和 Map 数据结构 Set WeakSet Map WeakMap Set § ⇧ 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set ...

  3. ES6之Symbol

    ES6中Symbol是为了防止属性名冲突而引入的,是独一无二的.Symbol值是通过Symbol函数生成.Symbol值不能与其他类型的值运算否则会报错且Symbol的值可以转换为字符串或者是布尔值但 ...

  4. 前端笔记之React(六)ES6的Set和Map&immutable和Ramda和lodash&redux-thunk

    一.ES6的Set.Map数据结构 Map.Set都是ES6新的数据结构,都是新的内置构造函数,也就是说typeof的结果,多了两个: Set 是不能重复的数组 Map 是可以任何东西当做键的对象 E ...

  5. [集合]Map的 entrySet() 详解以及用法(四种遍历map的方式)

    Entry 由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也 ...

  6. Es6(Symbol,set,map,filter)

    首先再讲这几个新东西之前,先说一个Es6中新出的扩展运算符(...) 1.展开运算符,就是把东西展开,可以用在array和object上 比如: let a=[,] let b=[,...a,]//[ ...

  7. ES6(四) --- 正则 Number Math

    想学vue了  重启ES6的学习之路 在ES5 中正则的构造器  RegExp  不支持第二个参数 ES6 做了调整   第二个参数表示正则表达式的修饰符(flag) var regex = new ...

  8. 深入理解ES6之—set与map

    Set是无重复值的有序列表.Set会自动移除重复的值,因此你可以使用它来过滤数组中重复的值并返回结果. Map是有序的键值对,其中的键允许是任何类型. Set和Map是es6新增的两个数据集合. Se ...

  9. ES6(四)字符串的扩展

    1.字符的表示方式 最早在  \u0000-\uFFFF 之间的字符已经足够使用吗,每个字符占两个字节,超出范围,必须使用双字节形式表达, 即每个字符占四个字节.超出范围的字符,会被解读成  \uXX ...

  10. es6入门set和map

    ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化. var set = new Set([1, ...

随机推荐

  1. iOS中类单例方法的一种实现

    在Cocos2D编程中,很多情况我们需要类只生成一个实例,这称之为该类的单例类. 一般我们在类中这样实现单例方法: +(instancetype)sharedInstance{ static Foo ...

  2. JAVA之旅(十七)——StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder

    JAVA之旅(十七)--StringBuffer的概述,存储,删除,获取,修改,反转,将缓存区的数据存储到数组中,StringBuilder 讲完String,我们来聊聊他的小兄弟 一.StringB ...

  3. 基于MSRDS机器人仿真平台的多机器人PID编队控制算法

    自己调试的编队PID算法,效果也还可以,具体使用教程参考视频链接: http://v.youku.com/v_show/id_XMTUwNjc3NjMyNA 仿真中三个机器人保持编队,做直线运动,队形 ...

  4. SQL2008数据表空间大小查询脚本

    --尽量少用触发器,否则数据库增长很快,特别是关于登陆的数据表字段不要用出发器,一周左右能使得数据库增长1G的空间. --数据库表空间大小查询脚本 IF  EXISTS (SELECT * FROM ...

  5. Python学习笔记 - 切片

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- def fact(n): if n == 1: return 1 return n * fact(n - ...

  6. Mahout 算法

    Mahout 包括协同过滤,基于User和Item的推荐:kmeans.Fuzzy-kmeans .Mean shift .Dirichlet process .LDA聚类:奇异值分解:并行频繁项集挖 ...

  7. REST(Representational State Transfer表述性状态转移)

    参考内容:http://www.csdn.net/article/2013-06-13/2815744-RESTful-API 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web ...

  8. 使用SVM对多类多维数据进行分类

    最近,本人要做个小东西,使用SVM对8类三维数据进行分类,搜索网上,发现大伙讨论的都是二维数据的二分类问题,遂决定自己研究一番.本人首先参考了opencv的tutorial,这也是二维数据的二分类问题 ...

  9. Picasso 图片加载库

    Picasso 英文意思国外一个很有名的画家毕加索的名字,国外项目取名还是很有意思的! 从github新下载的picasso项目有依赖其他第三方开源项目okhttp和okio,这两个项目也是相当经典的 ...

  10. EBS 系统标准职责定义MAP

    ERP的相关职责           Responsibility Name(职责) Application(应用) Responsibility Key(关键字) Data Group(数据组) M ...