标签:方法 es5 big 一个 字符 obj catch bre 遍历数组
//JSON //JSON.stringify()对于ES5中 0xD800-0xDFFF 这范围的字符串有个bug console.log(JSON.stringify(‘\u{D800}‘))//"\ud800" //在ES10之前是报错的
//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 //案例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}
//ES5 try{ }catch(e){ } //ES10可以去掉(e) try{ }catch{ }
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 能力升级
标签:方法 es5 big 一个 字符 obj catch bre 遍历数组
原文地址:https://www.cnblogs.com/sunnywindycloudy/p/13055490.html