ES10(2019)——JSONArrayObjectFunctiontry.catchBigInt 能力升级

Posted sunnywindycloudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES10(2019)——JSONArrayObjectFunctiontry.catchBigInt 能力升级相关的知识,希望对你有一定的参考价值。

JSON

//JSON
//JSON.stringify()对于ES5中 0xD800-0xDFFF 这范围的字符串有个bug
console.log(JSON.stringify(‘u{D800}‘))//"ud800"
//在ES10之前是报错的

 

Array

//Array
let arr=[1,[2,3],[4,5,[6,7]]]//把它扁平化输出
console.log(arr.flat())//(6) [1, 2, 3, 4, 5, Array(2)]
//flat:扁平化,作用是按照一个可指定的深度递归遍历数组,并将所有的元素于遍历到的子数组的元素合并成一个新数组返回

let arr2=[1,[2,3],[4,5,[6,7,[8,9]]]]
console.log(arr2.flat(3))//(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(arr2.flat(2))//(8) [1, 2, 3, 4, 5, 6, 7, Array(2)]
console.log(arr2.flat(1))//(6) [1, 2, 3, 4, 5, Array(3)]
//传递参数:可指定的深度,不传参数默认为1

console.log(arr2.flat(4))//(9) [1, 2, 3, 4, 5, 6, 7, 8, 9]
//传4效果跟3一样,因为数组深度只有3层


let arr3=[1,2,3]
console.log(arr3.map(item=>item*2))//[2,4,6]
console.log(arr3.map(item=>[item*2]))//(3) [Array(1), Array(1), Array(1)]
console.log(arr3.map(item=>[item*2]).flat())//[2,4,6]

console.log(arr3.flatMap(item=>[item*2]))//[2,4,6]

//去掉前后空格
let str=‘    foo     ‘;
console.log(str);//    foo     
console.log(str.replace(/^s+|、s+$/g,‘‘));//foo

console.log(str.trimStart());//foo
console.log(str.trimLeft());//foo
//trimStart,trimLeft都可以去除头部的空格

console.log(str.trimRight());//    foo
console.log(str.trimEnd());//    foo
//去除尾部的空格

console.log(str.trim());//foo
//去除头部和尾部的空格



//案例:从字符串中提取三个单词
let str2=`"foo" and "bar" and "baz"`;

//ES5
//方法1
function select(regExp,str){
    const matches=[]
    while(true){
        const match=regExp.exec(str)
        if(match===null) break
        matches.push(match[1])
    }
    return matches
}
//exec需要全局匹配,不然它只会在第一个位置匹配
console.log(select(/"([^"]*)"/g,str2))//["foo", "bar", "baz"]

//方法2
console.log(str2.match(/"([^"]*)"/g))//[""foo"", ""bar"", ""baz""]

//方法3
function select(regExp,str){
    const matches=[]
    str.replace(regExp,function(all,first){
        matches.push(first)
    })
    return matches
}
console.log(select(/"([^"]*)"/g,str2))//["foo", "bar", "baz"]

//ES10
function select(regExp,str){
    const matches=[]
    for (const match of str.matchAll(regExp)){
        matches.push(match[1])
    }
    return matches
}
console.log(select(/"([^"]*)"/g,str2))//["foo", "bar", "baz"]

//matchAll:所有满足条件的都返回

 

Object

//Object
//案例1
//ES5
const arr=[[‘foo‘,1],[‘bar‘,2]]
console.log(arr[1][0])//bar
console.log(arr[1][1])//2

//ES10
const obj=Object.fromEntries(arr)
console.log(obj.bar)//2

//案例2
const obj2={
    abc:1,
    def:2,
    ghksks:3
}

let res=Object.fromEntries(
    Object.entries(obj2).filter(([key,val])=>key.length===3)
    )
console.log(res);//{abc: 1, def: 2}

try.catch

//ES5
try{

}catch(e){

}
//ES10可以去掉(e)
try{

}catch{

}

BigInt:处理大于5的3次方的数字

console.log(11n);//加n就是BigInt数据类型

const a=11n;
console.log(typeof a)//"bigint"

const a=11;
console.log(typeof a)//"number"

//可以字符运算
console.log(11n+22n)//33n

 

以上是关于ES10(2019)——JSONArrayObjectFunctiontry.catchBigInt 能力升级的主要内容,如果未能解决你的问题,请参考以下文章

ES10(2019)可选的Catch Binding

ES10(2019)——JSONArrayObjectFunctiontry.catchBigInt 能力升级

ES10(2019)——JSONArrayObjectFunctiontry.catchBigInt 能力升级

ES10(2019)新特性

ES10(2019)Object.fromEntries()

ES10(2019)Symbol 扩展 Symbol.prototype.description