1. ES6 提供了 Map 数据结构,主要用于数组去重
var arr=[1,2,3,4,3,3,2,5]
var map=newMap()
arr.forEach((value,index)=>{map.set(value,index)})
var newArr=Array.form(map.keys())
2. ES7在ES6的基础上添加三项内容:求幂运算符(**)、Array.prototype.includes()方法、函数作用域中严格模式的变更。
2.1> 幂运算
2**3 // 8
2.2> includes
[1,2,3].includes(3) // true 还有一个indexof方法类似
3. ES8
3.1> async、await异步解决方案
a() {
return 异步请求返回数据
}
async b() {
var res = await a(); // 方法b会等待方法a执行完再执行
}
3.2> Object.entries(): Object.values()
Object.entries():
对于对象 会把每一对键值放到一个数组中, 再结合放到一个数组中转换为一个新的二维数组
Object.entries({name:1, age: 2}) // [["name", 1], ["age", 2]];
对于数组 会把下标和对应的值组成一个对象的一项, 再按上面的方法转换
Object.entries([1,2]) // [["0", 1], ["1", 2]]
Object.values()
Object.values({a:1, b: 2}) // [1, 2]
Object.values([1,2]) // [1,2]
4 ES9 命名捕获 反向引用命名捕获
5 ES10
flat()
两个都是数组的方法
arr = [1,2,3, [22,33], [6,7,[3,5,7]]]
arr.flat() // [1, 2, 3, 22, 33, 6, 7, Array(3)]
arr.flat(Infinity) // [1, 2, 3, 22, 33, 6, 7, 3, 5.7]
注: Infinity 深度降维, 不写就只降低一层
去除空项
arr=[1,2, ,4,5];
arr.flat(); // [1, 2, 4, 5]
flatMap()
arr=[1,2,3,4];
arr.map(x=>[x*2]);// [[2], [4], [6], [8]]
arr.flatMap(x=>[x*2]);// [2, 4, 6, 8]
// 只会将 flatMap 中的函数返回的数组 “压平” 一层
arr.flatMap(x=>[[x*2]]); // [[2], [4], [6], [8]]