Lợi ích của việc sử dụng Spread Operator so với Rest Operator trong JavaScript

1. Khái niệm về Spread và Rest

  • Spread Operator: Dùng để trải các phần tử của một iterable (mảng, chuỗi, đối tượng) thành các phần tử riêng lẻ.
const array1 = [1, 2, 3];
const array2 = [...array1, 4, 5];  // [1, 2, 3, 4, 5]
  • Rest Operator: Dùng để thu thập nhiều đối số hoặc phần tử thành một mảng duy nhất. Nó thường được sử dụng trong các hàm để thu thập các tham số còn lại.
function sum(...numbers) {
  return numbers.reduce((acc, curr) => acc + curr, 0);
}

sum(1, 2, 3, 4);  // 10

2. Lợi ích của Spread Operator so với Rest Operator

a. Trải các phần tử của iterable
  • Spread giúp bạn dễ dàng sao chép, kết hợp, hoặc thêm các phần tử của một mảng hoặc đối tượng mà không làm thay đổi dữ liệu gốc.
const original = [1, 2, 3];
const copy = [...original];  // Tạo một bản sao của mảng mà không thay đổi mảng gốc
b. Kết hợp nhiều iterable
  • Spread cho phép bạn kết hợp các iterable như mảng hoặc chuỗi thành một mảng mới một cách dễ dàng.
const array1 = [1, 2];
const array2 = [3, 4];
const combined = [...array1, ...array2];  // [1, 2, 3, 4]
c. Sao chép và mở rộng đối tượng
  • Spread có thể được dùng để sao chép và mở rộng các đối tượng một cách linh hoạt.
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };  // { a: 1, b: 2, c: 3 }