使用Rest和Spread處理物件和陣列
學習在JavaScript中使用兩種現代技術來處理陣列和物件。
你可以使用spread運算子 ...
來展開陣列、物件或字串。
讓我們從一個陣列的例子開始。給定
1 | const a = [1, 2, 3] |
你可以使用以下方式創建一個新的陣列
1 | const b = [...a, 4, 5, 6] |
你也可以使用以下方式創建一個陣列的複製
1 | const c = [...a] |
這對於物件也同樣適用。使用以下方式克隆一個物件:
1 | const newObj = { ...oldObj } |
對於字串,spread運算子會創建一個包含字串中每個字符的陣列:
1 | const hey = 'hey' |
這個運算子有一些非常有用的應用。其中最重要的一個是在非常簡單的方式下將陣列用作函數參數:
1 | const f = (arg1, arg2) => {} |
(在過去,你可以使用 f.apply(null, a)
來實現這一點,但這不太好看和易讀)
rest元素在處理陣列解構時非常有用:
1 | const numbers = [1, 2, 3, 4, 5] |
和spread運算子:
1 | const numbers = [1, 2, 3, 4, 5] |
ES2018引入了rest屬性,與此相同但適用於物件。
rest屬性:
1 | const { first, second, ...others } = { |
spread屬性允許通過合併spread運算子後傳遞的物件的屬性來創建一個新的物件:
1 | const items = { first, second, ...others } |
tags: [“JavaScript”, “array”, “object”, “spread operator”, “rest element”, “spread properties”]