Map和Set数据结构

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(),使用回调函数遍历每个成员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值