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. Android 官方命令深入分析之android

    作者:宋志辉 android命令是一个非常重要的开发工具,它可以: 创建.删除和查看Android Virtual Devices(AVDs). 创建和更新android项目. 更新你的android ...

  2. iOS中 读取相册,调用系统相机 技术分享

    技术内容:分别读取相册以及调取相机,将图片显示到imageView上 布局: 1.创建imageView 和 button 并为button一个关联pickerImage的事件 <div sty ...

  3. 推荐一本不错的书《Sencha Ext JS 5 Bootcamp in a Book》

    原文:https://www.createspace.com/5425618 看了一下该书目录,感觉不错,Ext JS 5的重点内容都提及了,确实是一本学习Ext JS 5的好书,唯一遗憾的地方就是太 ...

  4. java Domj4读取xml文件加强训练案例

    需求:给出一段xml文件.要求按照鸳鸯输出. xml文件代码如下: <?xml version="1.0" encoding="utf-8"?> & ...

  5. [信号处理技术]关于EMD的产生

    通俗易懂,有助于理解EMD和HHT,就原封不动的搬过来了. 原文链接:关于EMD的产生 自傅里叶变换与频谱分析技术产生,人们得以从另外一个角度观察时域信号,信号里各个点的密集程度,得以确定性地度量.之 ...

  6. 取消选中单选框radio的三种方式

    作者: 铁锚 日期: 2013年12月21日 本文提供了三种取消选中radio的方式,代码示例如下: 本文依赖于jQuery,其中第一种,第二种方式是使用jQuery实现的,第三种方式是基于JS和DO ...

  7. 总结C语言在嵌入式开发中应用的知识点(文件数据的加密与解密)

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  8. ffdshow 源代码分析 5: 位图覆盖滤镜(总结)

    ===================================================== ffdshow源代码分析系列文章列表: ffdshow 源代码分析 1: 整体结构 ffds ...

  9. 程序员编程艺术:第三章续、Top K算法问题的实现

    程序员编程艺术:第三章续.Top K算法问题的实现 作者:July,zhouzhenren,yansha.     致谢:微软100题实现组,狂想曲创作组.     时间:2011年05月08日    ...

  10. ANDROID 中设计模式的采用--创建型模式

     所谓模式就是在某一情景下解决某个问题的固定解决方案. 所有的创建型模式都是用作对象的创建或实例化的解决方案. 1 简单工厂模式 创建对象的最简单方法是使用new来创建一个对象,如果只创建一种固定 ...