es6基础回顾--Set和Map

Set

Set,ES6中新的数据结构,类似于数组,但是成员的值都是唯一的,没有重复。

    const a = new Set();
    [2,3,2,3,4,5,6].forEach(item => a.add(item));
    //遍历输出a的值
    for (let i of a){
        console.log(i);
    }
    //2 3 4 5 6
    //说明Set不会添加重复的值。

Array.from方法可以将Set结构转为数组

function quchong(array){
    return (Array.from(new Set(array)))
}
quchong([1,2,3,2,1])
//[1,2,3]

Set函数可以接受一个数组或者类似数组的对象作为参数来初始化。

    const set = new Set([1,2,3,4,4]);
    [...set]
    //[1,2,3,4];

运用set可以进行数组去重(划重点。。) […new Set(array)]
Set内部用类似于全等的算法计算值,不同的是NaN等于NaN,两个对象总是不相等。

Set实例的属性

  • Set.prototype.constructor : 就是Set构造函数
  • Set.prototype.size : 返回Set实例的成员总数

Set实例的四个操作方法

  • add(value) : 添加某个值,返回Set结构本身
  • delete(value) : 删除某个值,返回布尔值表示是否删除成功
  • has(value) : 返回一个布尔值,表示该值是否为Set的成员
  • clear() : 清除所有成员,没有返回值。

Set实例的四个遍历方法

  • keys() : 返回键名的遍历器
  • values() : 返回键值的遍历器
  • entries() : 返回键值对的遍历器
  • forEach() : 使用回调函数遍历每个成员

Set结构没有键名,所以键名和键值是同一个值,所以keys和values方法的行为完全一致。


WeakSet

WeakSet与Set类似,但是传入的数组成员只能是对象,并且这个对象属于弱引用,这个引用不计入垃圾回收机制里面的计数。

    const ws = new WeakSet([{a:1},{b:2}])
    ws // WeakSet{Object {a:1},Object {b:2}}

WeakSet结构的三个方法

  • add() : 添加某个对象,返回WeakSet结构本身
  • delete() : 删除某个对象,返回布尔值表示是否删除成功
  • has() : 返回一个布尔值,表示该对象是否为WeakSet的成员

WeakSet没有size属性,无法遍历成员。不能遍历是因为引用都是弱引用,随时可能消失。WeakSet的一个用处是储存DOM节点。


Map

JS里面的对象,本质上是键值对的集合,但是键只能用字符串,不能用别的例如对象。而Map可以做到键的范围不限于字符串。

    const obj = {a:1};
    const data = {};
    data[obj] = 'hello';
    data // {[object Object]: "hello"}  会转化成字符串

    const m = new Map();
    const o = {p:'hello world'};
    m.set(o,'content');
    m.get(o) //'content'  使用get方法读取

Map可以接受一个数组作为参数。

    const map = new Map([ ['name','tom'],['age','10'] ])
    map.get('name'); //'tom'

Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。undefined和null是两个不同的键。

Map实例的属性

  • Map.prototype.constructor : 就是Map构造函数
  • Map.prototype.size : 返回Map实例的成员总数

Map实例的操作方法

  • set(key,value) : 设置键名key对应键值value,返回整个Map结构。key若已存在则更新键值。
  • get(key) : get方法读取key对应的键值,找不到返回undefined。
  • has(key) : 返回一个布尔值表示键值是否在当前Map对象中。
  • delete(key) : 删除某个键,返回布尔值表示是否删除成功。
  • clear() : 清除所有成员,没有返回值。

Map实例的遍历方法

  • keys() : 返回键名的遍历器
  • values() : 返回键值的遍历器
  • entries() : 返回所有成员的遍历器
  • forEach() : 使用回调函数遍历每个成员

1.Map转为数组

    const myMap = new Map()
                  .set(true, 7)
                  .set({foo: 3}, ['abc']);
    myMap // Map(2){true => 7 ,Object {foo : 3} => ['abc']}
    [...myMap]
    // [   [true,7] , [ {foo:3} , ['abc'] ]   ]
    //[ [key,value],[key,value],..... ]

2.数组转为Map

    new Map([
        [1,'a'],
        [2,'b']
    ])
    Map(2){1=>"a",2=>"b"}

3.Map转为对象

    //Map键都是字符串
    const myMap = new Map().set('aa',1).set('bb',2);
    let obj = {};
    for(let [k,v] of myMap){
        obj[k] = v;
    }

4.对象转为Map

    let strMap = new Map();
    let obj = {aa:1,bb:2}
    for(let k of Object.key(obj)){
        strMap.set(k,obj[k]);
    }

5.Map转JSON

    let myMap = new Map().set('aa',1).set('bb',2);
    转为对象,再用JSON.stringify(obj)
    如果有非字符串的键值,则用JSON.stringify([...myMap])

6.JSON转Map

    JSON.parse(),然后再用对象转换成map数据方法转换。- -...

WeakMap

WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名。而且,WeakMap的键名所指的对象不计入垃圾回收机制。基本上,如果你要往对象上添加数据,又不想干扰垃圾回收机制,就可以使用 WeakMap。
注意,WeakMap 弱引用的只是键名,而不是键值。键值依然是正常引用。就是键值还是计入垃圾回收机制。
WeakMap没有遍历操作,也没有size属性。只有四个方法,get(),set(),has(),delete()。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过信息化手段提升教育、管理和服务水平,实现资源数字化、工作流程化、管理高效化和决策智能化。方案包括智慧校园信息化平台和安防平台的建设,涉及教学、科研、管理和服务等多个方面,以满足现代教育和培训需求。 技术服务要求强调了统一支撑平台的建设,包括数据标准、接口标准、代码标准和用户信息标准的统一制定。平台需满足信创和X86交叉适配要求,确保安全自主可控的系统开发环境。此外,方案还涵盖了用户中心系统、统一认证授权中心、统一工作流中心、统一智能报表中心等多个模块,以及数据共享中心、语音识别、移动服务终端等功能,以实现校园内外部信息的互联互通和资源共享。 智慧校园信息化平台的建设还包括了对教学管理、人事管理、公文管理、档案管理、即时通讯、会议管理、督办工作、资产管理等方面的数字化和自动化升级。这些模块的集成旨在提高工作效率,优化资源配置,加强监督管理,并通过移动应用等技术手段,实现随时随地的信息访问和业务处理。 安防平台的建设则侧重于校园安全,包括停车场管理、人脸识别测温、访客自助登记、视频监控等多个系统。这些系统的集成旨在提高校园的安全管理水平,实现对校园内外人员和车辆的有效监控和管理,确保校园环境的安全稳定。 最后,方案还提到了对固定资产的管理,包括购置、使用、归还、报废等全生命周期的管理,以及对网络设备、安防设备、服务器等硬件设施的配置和管理。通过这些措施,智慧校园建设方案旨在为校园提供一个安全、高效、便捷的学习和工作环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值