# 7.ES6新增数据类型
# 1.Symbol
原始数据类型 Symbol,它表示独一无二的值
const name = Symbol('name')
const name2 = Symbol('name2')
console.log(name === name2) //false
最大用处:用于定义对象的私有变量
let s1 = Symbol('s1')
console.log(s1)
let obj = {}
obj[s1] = '张三'
console.log(obj)
console.log(obj[s1])
console.log(obj.s1) // undefined
# 2.Set
ES6提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set 本身是一个构造函数,用来生成Set数据结构
const s = new Set()
Set函数可以接受一个数组作为参数,用来初始化
const set = new Set([1, 2, 3, 4, 4])
set.forEach(item => {
console.log(item)
})
// 1 2 3 4
console.log(set.size) // 4
let arr = [1, 3, 4, 6, 10, 10, 3]
const set2 = new Set(arr)
arr = [...set2] // 去重
# 实例方法
- add(value):添加某个值,返回Set结构本身
- delete(value):删除某个值,返回布尔值,表示删除是否成功
- has(value):返回一个布尔值,表示该值是否为Set的成员
- clear():清除所有成员
const s = new Set()
s.add(1).add(2).add(3)
s.delete(2)
s.has(1)
s.clear()
# 遍历
Set结构的实例与数组一样,也有forEach方法
const set = new Set([1, 2, 3])
set.forEach(item => {
console.log(item)
})
# 3.Map
Map类型是键值对得有序列表,键和值是任意类型
let map = new Map()
console.log(map)
map.set('name','张三')
console.log(map)
console.log(map.get('name'))
console.log(map.has('name')) // true
map.delete('name')
map.clear()
map.set(['a',[1,2,3]], 'hello')
console.log(map)
map.set(['a', 1], ['c', 2])
console.log(map)
// a => 1 , c => 2