ES6 知識碎片2

2021-09-30 19:09:53 字數 2950 閱讀 9563

es2018 引入了具名組匹配(named capture groups),允許為每乙個組匹配指定乙個名字,既便於閱讀**,又便於引用。同時,數字序號(matchobj[1])依然有效。

const

re_date

=/(?\d)-(?\d)-(?\d)/

;const matchobj =

re_date

.exec

('1999-12-31');

const year = matchobj.groups.year;

// 1999

const month = matchobj.groups.month;

// 12

const day = matchobj.groups.day;

// 31

如果具名組沒有匹配,那麼對應的groups物件屬性會是undefined。

const

re_opt_a

=/^(?a+)?$/

;const matchobj =

re_opt_a

.exec(''

);matchobj.groups.

as// undefined

'as'

in matchobj.groups // true

上面**中,具名組as沒有找到匹配,那麼matchobj.groups.as屬性值就是undefined,並且as這個鍵名在groups是始終存在的。

指定了預設值以後,函式的length屬性,將返回沒有指定預設值的引數個數。也就是說,指定了預設值後,length屬性將失真。

(

function

(a))

.length // 1

(function

(a =5)

).length // 0

(function

(a, b, c =5)

).length // 2

這是因為length屬性的含義是,該函式預期傳入的引數個數。某個引數指定預設值以後,預期傳入的引數個數就不包括這個引數了。同理,後文的 rest 引數也不會計入length屬性。

(

function

(...args)

).length // 0

如果設定了預設值的引數不是尾引數,那麼length屬性也不再計入後面的引數了。

(

function

(a =

0, b, c)

).length // 0

(function

(a, b =

1, c)

).length // 1

陣列的成員有時還是陣列,array.prototype.flat()用於將巢狀的陣列「拉平」,變成一維的陣列。該方法返回乙個新陣列,對原資料沒有影響

[1,

2,[3

,4]]

.flat()

// [1, 2, 3, 4]

flat()預設只會「拉平」一層,如果想要「拉平」多層的巢狀陣列,可以將flat()方法的引數寫成乙個整數,表示想要拉平的層數,預設為1

[1,

2,[3

,[4,

5]]]

.flat()

// [1, 2, 3, [4, 5]][1

,2,[

3,[4

,5]]

].flat(2

)// [1, 2, 3, 4, 5]

如果不管有多少層巢狀,都要轉成一維陣列,可以用infinity關鍵字作為引數。

[1,

[2,[

3]]]

.flat

(infinity

)// [1, 2, 3]

如果原陣列有空位,flat()方法會跳過空位。

[1,

2,,4

,5].

flat()

// [1, 2, 4, 5]

flatmap()方法對原陣列的每個成員執行乙個函式(相當於執行array.prototype.map()),然後對返回值組成的陣列執行flat()方法。該方法返回乙個新陣列,不改變原陣列。

// 相當於 [[2, 4], [3, 6], [4, 8]].flat()[2

,3,4

].flatmap

((x)

=>

[x, x *2]

)// [2, 4, 3, 6, 4, 8]

flatmap()只能展開一層陣列。

// 相當於 [[[2]], [[4]], [[6]], [[8]]].flat()[1

,2,3

,4].

flatmap

(x =>

[[x *2]

])// [[2], [4], [6], [8]]

上面**中,遍歷函式返回的是乙個雙層的陣列,但是預設只能展開一層,因此flatmap()返回的還是乙個巢狀陣列。

es6 提供了新的資料結構 set。它類似於陣列,但是成員的值都是唯一的,沒有重複的值。

展示了一種去除陣列重複成員的方法。

[

...new

set(array)

]

展示了一種去除字串裡面的重複字元。

[

...new

set(

"abcddeeee")]

.join(''

);//abcde

es6常用知識總結

es6已經出了2年左右的時間了,雖然部分瀏覽器沒有支援es6,不過在babel等幫助下,我們依然可以使用es6相關的內容,現在對es6常用內容的總結。變數結構是按照一堆的規則從陣列或者物件中提取值並賦予給變數。陣列解構 let x,y,z 1,2,3 console.log x 1 console....

前端知識整理 ES6

es6 1 模組化 export default export function fn1 export function fn2 import util from util1.js import from util2.js 2 使用babel npm install babel core babel...

es6 知識總結 4

我們在程式設計過程中常常用到物件導向,物件建立例項這個方法,但是es6中給我封裝了乙個class類 下邊給大家介紹一下 萬事萬物皆物件 1.類是由物件 抽象 泛化出來的 2.物件是由類建立出來的 3.物件叫類的具體例項 function person name,age person.prototyp...