资源
- 推荐zeal:离线文档查看器 https://zealdocs.org/
- 推荐w3c:线上文档 https://www.w3school.com.cn/
- 本笔记参考视频,李立超:BV1mG411h7aD
- 我的笔记:https://gitee.com/plusmile/stackedit-app-data.git
Map
- Map用来存储键值对解构的数据
- Object中存储的数据可以认为是一种键值对结构,实际上是名值对
- 创建方法,const map=new Map();添加键值对,map.set(键,值);看键值对数量,map.size;取数据,map.get(键);删除,map.delete(键);检查是否包含指定键,map.has(键);清空,map.clear();获取所有key,map.keys();获取所有value,map.values();获取所有键值对,map.entries()
- Map与Object的区别:Object的属性名只能是字符串或者符号,传递其他时会自动转换为字符串。Map中任何类型的值都可以成为数据的key。
- Map转换为数组:使用Array.from(map),每个键值对变为一个数组;使用展开运算符,arr=[…map];
- 数组生成Map,new Map([ [key,value],[key,value],[key,value] ])
- 遍历map,使用for(const [key,value] of map){}或者map.forEach((key,value)=>{xxxx})
Set
- 用来创建一个集合,功能和数组类似,不同点在于Set中不能存重复数据,{集合的数据}。
- 创建const set=new Set();添加数据,set.add(数据);看数据数量,set.size;检查是否包含指定值,set.has(数据);删除,set.delete(数据);获取所有数据,set.entries()
- 遍历Set, for(const item of set){}
- 没法获取第几个,需要先转换为数组,arr=[…set];
- 数组生成Set,const set=new Set([某个数组]);还能去重
- Set本质是Map,就是键值对是一样的。
Math
- 绝对值:Math.abs(数);
- 最小值:Math.min(多个数);
- 最大值:Math.max(多个数);
- x的y次方:Math.pow(x,y);
- 开方:Math.sqrt(数);
- 向下取整:Math.floor(数);
- 向上取整:Math.ceil(数);
- 四舍五入取整:Math.round(数);
- 去掉小数位:Math.trunc(数);
- 生成0~1的随机数,0,1都取不到:Math.random();
Date
- 使用Date对象表示时间相关的数据
- 创建时间对象:new Date(),保存的是运行到这行代码的时间
- 可以给构造函数传递时间的字符串,创建指定时间的时间对象。new Date(‘月/日/年 时:分:秒’)或者new Date(‘年-月-日T时:分:秒’)。可以用但不推荐。
- 对象的方法:1.获取四位数的年份,时间对象.getFullYear();2.返回月份的索引0~11,时间对象.getMonth();3.获取日期,时间对象.getDate();4.获取星期几的索引,0-6,0表示星期日,时间对象.getDay();5.还有,getOur(),getMinute()等
- 创建指定时间对象的第二种方式:直接传数字参数,new Date(年份,月,日,时,分,秒,毫秒),年月日是必须的,后面可选,注意日期,星期,小时的数字参考上面的方法。
- 静态方法,Date.now()获取当前时间戳,时间戳计算方式同getTime()。
- 日期格式化方法,1. d.toLocaleDateString(),将日期(年/月/日)转换为本地的字符串,本地指区域设置。2. d.toLocaleTimeString(),将时间(时:分:秒)转换为本地的字符串;3. d.toLocaleString(),将日期和时间(年/月/日 时:分:秒)转换为本地的字符串;
- 可以对格式化方法传参来设置格式化方式,参数1:描述语言和国家信息的字符串,‘zh-CN’,'en-US’等。参数2:需要一个对象作为参数,通过对象属性对日期时间格式进行配置。如dateStyle(full/long/medium/short)/timeStyle/hour12(true/false)/weekday(long/short/narrow)/year(numeric/2-digit)等,例:d.toLocaleString(‘zh-CN’,{dateStyle:full,hour12:true})
包装类
- 通过new String(‘hello’)/Number(9)/… 可以创建原始值的对象,但进行相等比较时,虽然值相同,但对象不同,所以会导致不相等。所以不能这么创建原始值对象
- 包装类可以将一个原始值包装成一个对象,共有五个,String,Number,Boolean,Bigint,Symble。
- 当对一个原始值调用方法和属性时,JS会临时将原始值包装为对象,然后调用这个对象的属性或方法,着意味着对象中的方法都可以通过原始值来调用。
- 比如,str.toString(),就是临时包装为对象后,再调用该对象的方法。