Set 集合
类似于数组, 但是成员的值都是唯一的, Set
本身是一个构造函数
用来生成 Set
数据结构 Set
结构的实例方法
add()
添加值, 返回 Set 结构本身
const set = new Set()
set.add(1)
set.add(1)
set.add(2)
console.log(set) //Set {1, 2}
delete()
删除值, 返回布尔值表示是否删除成功
let set = new Set()
set.add(1)
set.delete(1) //true
console.log(set) //Set {}
has()
返回布尔值, 判断 Set
对象中是否含有某值
let set = new Set()
set.add('hello')
set.add('world')
set.has('hello') //true
set.has(1) //false
clear()
移除所有元素, 没有返回值
keys()
返回一个 Iterator
对象, 对象按照原 Set
对象元素
的插入顺序返回其所有元素
let set = new Set()
set.add('hello')
set.add('world')
const keys = set.keys()
console.log(keys) //{'hello', 'world'}
console.log(keys.next().value) //hello
console.log(keys.next().value) //world
values()
与 keys()
用法一样, 返回 Iterator
对象, 返回值也与 keys()
一样
entries()
返回一个键值对形式的迭代器, 类似 [value, value]
形式的数组 value
是集合中的每个元素
let set = new Set()
set.add('hello')
set.add('world')
const entries = set.entries()
console.log(entries.next().value) //['hello', 'hello']
console.log(entries.next().value) //['world', 'world']
`Map 集合
类似于对象, 是键值对的集合, 数据可为任意类型, 与 Object
的区别在于 Object
的键只能是字符串或者 Symbols
, 但Map
可以为任意类型, 且 Map
中的键值是有序的 Map
结构的实例方法
set(key, value)
设置键值对, 返回整个 Map()
结构, 若对应键已有值则覆盖原有的值
let map = new Map()
map.set('name', 'lil')
console.log(map) //{'name' => 'lil'}
get(key)
获取 key
对应的键值, 若没有则返回undefined
let map = new Map()
map.set('name','lil')
console.log(map.get('name')) //lil
has(key)
返回布尔值, 查询 key
是否在当前对象中
let map = new Map()
map.set('name','lil')
console.log(map.has('name')) //true
console.log(map.has('age')) //false
delete(key)
删除 key
对应的键值对, 删除成功返回 true
否则返回false
let map = new Map()
map.set('name','lil')
console.log(map.delete('name')) //true
console.log(map) //{}
clear()
清除所有键值对, 没有返回值
keys()
返回新的 Iterator
对象, 按顺序插入 Map
对象中所有key
let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')
console.log(map.keys()) //{'name', 'age', 'gender'}
values()
返回新的 Iterator
对象, 按顺序插入 Map
对象中所有value
let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')
console.log(map.keys()) //{'lil', '21', 'male'}
entries()
返回新的 Iterator
对象, 按顺序插入 Map
对象中每个元素的 [key,value]
数组
let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')
console.log(map.entries())
//{[ 'name','lil'],['age','21'],['gender','male'] }
forEach(callback,thisArg)
callback(key,value,Map)
必选, 对象中每个元素都要执行的回调函数
key- 当前元素的键
value- 当前元素的值
Map- 当前正在遍历的对象
thisArg
可选, 回调函数执行时的 this
的值 forEach()
返回值为undefined
let map = new Map()
map.set('name','lil')
map.set('age','21')
map.set('gender','male')
map.forEach((value, key)=> {console.log(key+'='+value)
})
//name = lil
//age = 21
//gender = male