十三 Set集合 可以去重
size 个数
add 添加
delete 删除
has 检测
clear 清空
let arr = [1,5,2,6,4,2,5,6,9,4,3,7,8]
// 数组去重
let result = [...new Set(arr)]
// 交集 既在a也在b
let arr2 = [5,6,5,4,3,5]
let result = [...new Set(arr)].filter(item=>new Set(arr2).has(item));
// 并集 合并之后的结果
let union = [...new Set([...arr,...arr2])];
// 差集
let diff = [...new Set(arr)].filter(item=>!(new Set(arr2).has(item)));
十四 map
size 大小
set 添加
get 获取
has 检测
clear 清空
delete 删除
十五 class 类
class 声明类
constructor 定义构造函数初始化
extends 继承父类
super 调用父级构造方法
static 定义静态方法和属性
父类方法可以重写
十六 数值扩展
Number.EPSTION // 是js表示得最小精度 用于浮点数运算
function equal(a,b){
if(Math.abs(a-b) < Number.EPSTION>){
return true;
}else{
return false;
}
}
console.log(equal(0.1+0.2 === 0.3))
二进制和八进制
let b = 0b1010; 二进制
let 0 = 0o777; 八进制
let d = 100; 十进制
let x = 0xff; 十六进制
Number.isFinite //检测一个数值是否为有限数
Number.isNaN //检测一个数值是否为 NaN
Number.parseInt//(把字符串 [ 参数 string 的值] 解析成整数) Number.parseFloat(把一个字符串解析成浮点数)
Number.isInteger //判断一个数是否为整数
Math.trunc //将数字的小数部分抹掉
Math.sign //判断一个数是正数/负数/零
十七 对象方法扩展
Object.is 判断两个值是否完全相等
Object.assign 对象合并
Object.setPrototypeof 设置原型对象
Object.getPrototypeof 获取原型对象
十八 模块化
优势:
防止命名冲突
代码复用
高维护性
babel 的使用
安装工具 babel-cli babel-preset-env browserify(webpack)
十九 ES7 includes
const ary = [1,2,3,4,5,6]
console.log(ary.includes(1))
// 幂运算
console.log(2**10)// 2的十次方
二十 ES8 async和await
async函数返回值为promise对象
promise对象的结果由async函数执行的返回值决定
await要放在async函数中
const p = new Promise((resolve,reject)=>{
resolve('成功的值')
})
async function main(){
try{
let result = await p;
console.log(result)
}catch(e){
console.log(e)
}
}
main()
二十一 ES6 对象 rest参数和扩展运算符
function connect({host,port,...user}){
console.log(host,port,user)
}
connect({
hsot:'127.0.0.1',
port:3306,
username:'root',
password:'123456'
})
// 扩展运算符,将四个对象属性放到一个对象里
const name1 = {a:'admin'}
const name2 = {b:'jack'}
const name3 = {c:'tom'}
const name4 = {d:'lisa'}
const username = {...name1,...name2,...name3,...name4}
二十二 ES9 正则扩展
声明一个字符串
let str = '<a href="hhtp://www.baidu.com">百度</a>'
const reg = /<a href="(?<url>.*)">(?<text>.*)</a>/
const result = reg.exec(str)
console.log(result.groups.url,result.groups.text)
// dot . 元字符 除换行符以外的任意单个字符
二十三 ES10 Object.fromEntries
// 二维数组 将二维数组转为对象
const result = Object.fromEntries([
['name','tom'],
['age','12,16,13']
])
二十四 ES10 trimStart trimEnd 清除字符串左侧和右侧空白
二十五 flat flatMap
// flat 将多维数组转为低维数组 接收数字为深度 默认值是1
const arr [1,2,3,[5,6]]
console.log(arr.flat()); // 将二维转为一维
// flatMap 相当于flat和map的结合,将结果flat
const arr [1,2,3,4]
const res = arr.flatMap(item=>[item*10])
console.log(res)
二十六 Symbol.prototype.description
let s = Symbol('admin')
console.log(s.description) // 通过 description 可以得到该字符串
二十七 ES11 私有属性
class Person{
name;
#age;
constructor(name,age){
this.name = name;
this.#age = age
}
}
const user = new Person('tom',18)
console.log(user.name,user.#age) // 报错
二十八 可选链操作符 ?.
function main(config){
// 两者相等 使用 ?. 的时候即使不传递参数也不会报错
const res = config && config.db
const res = config?.db;
}
二十九 BigInt 大整型 用于大数值运算
let n = 215n
console.log(typeof(n))