Map和Set数据结构的属性和方法
1.Map数据结构,类似于对象,也是键值对的计划,但“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。
Map结构提供了“值--值”的对应
Map的键实际上是和内存地址绑定的,只要内存地址不一样,就是为两个键。如果对同一个键多次赋值,后面的值会覆盖前面的值。
size属性返回成员总数,
set(key,value)设置key所对应的键值,然后返回整个Map结构。
get(key)读取key对应的键值,如果没有key,返回undefined
has(key),返回布尔值,表示某个键是否在Map中。
delete(key)删除某个键,返回true删除成功,fasle删除失败
clear(),清除所有成员,没有返回值
Map原生提供了3个遍历器生成函数和1个遍历方法
keys()返回键名的遍历器
values()返回键值的遍历器
entries()返回所有成员的遍历器
forEach()遍历所有成员
Map结构转化为数据结构比较快的方法是结构扩展运算...
1.2与其他结构相互转化
Map转化为对象
function strMapToObj(strMap){
let obj = Object.create(null);
for(let [k,v] of strMap){
obj[k] = v
}
return obj;
}
const myMap2 = new Map()
.set('yes',true).set('no',false)
strMapToObj(myMap2)
对象转化为Map
function objToMap(obj){
let strMap = new Map();
for(let k of Object.keys(obj)){
strMap.set(k,obj[k])
}
return strMap;
}
objToMap({a:123,b:345})
Map----》JSON
function strMapToJson(strMap){
return JSON.stringify(strMapToObj(strMap))
}
let mapp1 = new Map().set('yes',true).set('no',false)
strMapToJson(mapp1)
JSON--->Map
function jsonToStrMap(jsonstr){
return objToMap(JSON.parse(jsonstr))
}
jsonToStrMap('{"yes":true,"no":false}')
2.Set
set结构类似于数组,但是set数据结构成员的值是唯一的,没有重复。
set结构可以接受一个数组作为参数,用来初始化
const set = new Set([1,2,3,,]);
([...set])
//[1,2,3]
Set实例的属性和方法
2.1属性
Set.prototype.constructor 构造函数,默认就是Set函数
Set.prototype.size返回set实例的成员总数
2.2四个操作方法
add(value)添加某个值,返回Set结构本身
delete(value),删除某个值,返回一个布尔值,表示删除是否成功
has(value),返回一个布尔值,表示参数是否为Set成员
clear(),清除所有成员,没有返回值。
Array.from方法可以将Set结构转为数组。
Array.from(new Set([1,2,3]))
//数组去重
function deduce(array){
return Array.from(new Set(array))
}
deduce([1,1,2,3]) //[1,2,3]
2.4遍历操作
keys(),返回键名的遍历器
value(),返回键值的遍历器
entries(),返回键值对的遍历器
forEach(),使用回调函数遍历每个成员