Toán tử spread
Trong ES6 và sau này, bạn có thể sử dụng toán tử spread … để bao gồm các phần tử của một mảng bên trong một
literal mảng:
let a = [1, 2, 3];
let b = [0, …a, 4]; // b == [0, 1, 2, 3, 4]
Dấu … dải mảng a để rằng các phần tử của nó trở thành các phần tử bên trong literal mảng cái đang được tạo. Nó
như thể là …a được thay thế bởi các phần tử của mảng a, liệt kê theo nghĩa đen như phần của literal mảng bao
gói. (Chú ý rằng, mặc dù chúng ta gọi những dấu ba chấm này một toán tử spread, cái này không phải là một toán tử
thực sự vì nó chỉ có thể được sử dụng trong các literals mảng và, như chúng ta sẽ thấy sau này trong các học phần,
các khởi động hàm).
Toán tử spread là một cách thức thuận tiện để tạo một bản sao (cạn) của một mảng:
let original = [1,2,3];
let copy = […original];
copy[0] = 0; // Modifying the copy does not change the original
original[0] // => 1
Toán tử spread làm việc trên bất cứ object lặp qua được nào. (Các object lặp qua được là cái for/of loop lặp
qua, chúng ta trước tiên đã thấy trong các học phần trước, và chúng ta sẽ thấy nhiều hơn về chúng trong các
học phần sau). Các strings là lặp qua được, nên bạn có thể sử dụng một toán tử spread để biến bất cứ string nào
thành một mảng các strings kí tự đơn:
let digits = […”0123456789ABCDEF”];
digits // => [“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9″,”A”,”B”,”C”,”D”,”E”,”F”]
Các set objects (các học phần sau) là lặp qua được, nên một cách thức dễ dàng để loại bỏ các phần tử trùng khỏi một
mảng là chuyển đổi mảng thành một set và sau đó ngay lập tức chuyển đổi set quay trở lại thành một mảng sử dụng toán
tử spread:
let letters = […”hello world”];
[…new Set(letters)] // => [“h”,”e”,”l”,”o”,” “,”w”,”r”,”d”]
