ES10(2019)——JSON、Array、Object、Function、try.catch、BigInt 能力升级
2021-02-09 23:17
标签:方法 es5 big 一个 字符 obj catch bre 遍历数组 ES10(2019)——JSON、Array、Object、Function、try.catch、BigInt 能力升级 标签:方法 es5 big 一个 字符 obj catch bre 遍历数组 原文地址:https://www.cnblogs.com/sunnywindycloudy/p/13055490.htmlJSON
//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)——JSON、Array、Object、Function、try.catch、BigInt 能力升级
文章链接:http://soscw.com/index.php/essay/53307.html