Menu
CoddyTech

Spread và rest

Bài học 5 trên 9 trong khóa học Những phần khó trong JavaScript hiện đại (ES6+) của Coddy.

Trong Javascript, toán tử <strong>...</strong> (ba dấu chấm) có thể dùng cho hai mục đích!

Trải rộng

Có thể dùng <strong>...</strong> để truyền các phần tử của một mảng vào hàm dưới dạng các tham số riêng biệt.

let array1 = [1,2,3];
Math.max(...array1); // giống hệt Math.max(1,2,3)

Toán tử này cũng dùng để sao chép một mảng vào một mảng khác hoặc sao chép các thuộc tính từ một đối tượng literal sang một đối tượng literal khác.

let arr1 = [1,2,3];
let arr2 = [6,7,8];
let final = [...arr1, 4, 5, ...arr2]; // [1,2,3,4,5,6,7,8]

let obj1 = {name:"Shubham"};
let obj2= {work: "Software Development"};
let finalObj = {...name,...work}; // {name:"Shubham",work:"Software Development"}

Thu thập phần còn lại

Có thể dùng <strong>...</strong> để thu thập tất cả các tham số còn lại của một hàm vào một mảng.

function sum(a,b,...rest){
	console.log("rest parameters : ", rest); 
}

sum(1,2,3,4,5,6) //các tham số còn lại: [3,4,5,6]

Các tham số còn lại luôn phải nằm cuối cùng. function sum(a, ...rest , b){ } sẽ không hoạt động.

challenge icon

Thử thách

Dễ

Viết một hàm để sao chép các thuộc tính từ cả obj1 & obj2 và trả về đối tượng mới có các thuộc tính của cả hai đối tượng.

Tự làm thử

function combineObjects(obj1, obj2) {
    // Viết code ở đây
}

Tất cả bài học trong Những phần khó trong JavaScript hiện đại (ES6+)

Tự luyện tập: Trình biên dịch JavaScript online