ES6中新增的数据结构
Map
- 在ES6之前,JavaScript中实现“键值”的形式是Object来实现的,其中Object以对象的属性名作为键,以属性值作为值。但是在Object中,定义属性名只能使用字符串数据类型,而Map类似于对象,也是键值对集合,各种类型的值(包括对象,数字)都能当做键。
创建Map实例
- Map()构造函数,创建Map实例
const map1 = new Map //创建一个空映射
const map2 = new Map([ //传入二维数组初始化为Map的实例对象
[1,'one'],
[2,'two'],
[3,'three']
]);
//传入map实例中的可迭代对象中的每个键值对都会按照迭代顺序插入新映射实例中,说明map数据结构是有顺序的
Map的基本API
- set(key,value)
设置key所对应的键值,然后返回整个Map结构;如果key已经优质,则键值会被更新,否则就新生成改键。
const map= new Map() //创建映射,并初始化为空
map.set(1,'one') // 增加新的映射关系
map.set(2,'two')
map.set(3,'three')
console.log(map); // Map(3) {1 => "one",2 => "two",1 => "three"}
map.set(1,'first') //修改映射关系
console.log(map); // Map(3) {1 => "first",2=>"two",3=>"three"}
- size
返回Map结构的成员总数,注意这里size为Map实例的属性,调用时不加( )
console.log(map.size) //3 ,注意
- get(key)
读取key所对应的键值,如果找不到key,则返回undefined
console.log(map.get(1)) //first
console.log(map.get('1')) //undefined,注意这里的1是字符串,上面的是数字
- has(key)
返回一个布尔值,表示某个键是否在Map数据结构中
console.log(map.has(1)) //true
console.log(map.has('1')) //false
+ delete(key)
删除某个键,返回true,如果失败,则返回false
console.log(map.delete(1)) //true,在实例中找到,并删除成功
console.log(map.delete('1')) //false,实例中未找到,删除失败
- clear()
清空所有成员,没有返回值
console.log(map) // Map(3) {2=>"two",3=>"three"}
map.clear() //
console.log(map) //Map(0) {}
- keys()
返回键名,并以插入顺序排列
console.og(map.keys()) //[Map Iterator] { 1, 2, 3 },可在for循环中作为迭代对象,使用 let i of map.keys()
- values()
返回键值
console.og(map.values()) //[Map Iterator] { 'first', 'two', 'three' },可在for循环中作为迭代对象,使用 let i of map.valuess()
- entries()
按映射关系,返回所有成员
console.og(map.entries()) //[Map Entries] { [ 1, 'first' ], [ 2, 'two' ], [ 3, 'three' ] },可在for循环中作为迭代对象,使用 let i of map.valuess()
- forEach(callback,opt)
返回Map所有成员
const map = new Map([
["key1","val1"],
["key2","val2"],
["key3","val3"],
])
map.forEach((val,key) => alert(`${key}=>${val}`))
// key1 => val1
// key2 => val2
// key3 => val3
Set
- Set是ES6新增的数据集合类型,Set类似于是一个集合,可以存放任意类型的数据结构作为key,但没有value,且集合中的元素不可以重复。Set在比较元素是否相等时,使用严格对象的相等的标准来检查。
创建Set实例
const set = new Set(['val1','val2','val3']) //接收一维数组作为参数传入
Set的API
- add(key)
添加元素
set.add('sa')
- delete(key)
删除元素
set.delete('sa') //返回布尔值,有则删除成功返回true,没有则返回false,删除失败。
- has(key)
查询元素
set.kas('sa')
- size
添加元素
set.size // 返回set实例的元素个数
- clear()
清空元素
set.clear()