ES10 新增特性
一. 数组方法
1.flat()
用来数组降维 展开嵌套数组的方法,默认展开一层,如果想要展开多层,可以传入参数n,如
按照可以指定的深度遍历数组并将所有元素与遍历到的子数组中的元素合并为一个新的数组返回
var arr = [{name:'tt',age:90},[{sex:'nan',fix:'34'}]]
arr.flat()
var arr = [{name:'tt',age:90},[{sex:'nan',fix:'34'},[{t1:'nan',t2:'34'}]]]
arr.flat(2)
用于去除数组的空项
var arr = [1,2,,4,5]
arr.flat() // [1,2,4,5]
2.flatMap()
和map()方法类似
var arr = [1,2,3,4]
arr.map(x => [x*2]) // [[2],[4],[6],[8]]
arr.flatMap(x => [x*2]) // [2,4,6,8]
Object.fromEntries()
将Map变为对象
const map = new Map([['foo','bar'],['baz',42]])
const obj = Object.fromEntries(map)
obj // {foo:'bar', baz:42}
将数组变为对象
const map = [['foo','bar'],['baz',42]]
const obj = Object.fromEntries(map)
obj // {foo:'bar', baz:42}
二. 新特性
链式调用?
js中在调用某个非对象上的属性时会报TypeError的错误,如下:
let obj = {
name: 'aaa',
age: 18
}
console.log(obj.school.address) //Uncaught TypeError: Cannot read property 'address' of undefined
使用链式调用之后,js语句会输出undefined,不会报错
console.log(obj.school?.address) //undefined
空值合并??
为变量 fruit 赋值,如果当前值不存在,则赋为默认值 'apple',可以使用逻辑运算符||实现,如下:
let value = 0;
let fruit = value || 'apple'
console.log(fruit) // apple
js假值有false、null、0、""、undefined 和 NaN,|| 逻辑符会将假值过滤掉,但如果我们不想要过滤 0 或者 '' 字符,这时可以使用新增合并属性 ??,合并符只会过滤掉 null和 undefined,如下:
fruit = NaN ?? 'apple'
console.log(fruit) //NaN
fruit = 0 ?? 'apple'
console.log(fruit) //0
fruit = null ?? 'apple'
console.log(fruit) // 'apple'