Cách sử dụng tập hợp (Set) trong JavaScript
Javascript căn bản | by
Trong JavaScript, Set là một cấu trúc dữ liệu đặc biệt giúp lưu trữ danh sách các giá trị duy nhất, tức là không có phần tử trùng lặp. Không giống như Array, Set không cho phép hai phần tử có cùng giá trị, giúp tối ưu hóa hiệu suất trong nhiều trường hợp như lọc dữ liệu trùng lặp hoặc tìm kiếm nhanh hơn.
Vậy Set hoạt động như thế nào? Khi nào nên sử dụng Set thay vì Array? Trong bài viết này, mình sẽ tìm hiểu chi tiết về cách tạo, thao tác, duyệt và ứng dụng thực tế của Set trong lập trình JavaScript.
Set trong JavaScript
Set là một đối tượng trong JavaScript được sử dụng để lưu trữ tập hợp các giá trị duy nhất, nghĩa là không có phần tử nào bị trùng lặp. Set có thể chứa bất kỳ loại dữ liệu nào, từ số, chuỗi, đối tượng đến các kiểu dữ liệu phức tạp khác.
Set giúp tối ưu hiệu suất khi làm việc với danh sách dữ liệu cần loại bỏ các phần tử trùng lặp hoặc khi cần kiểm tra sự tồn tại của một giá trị một cách nhanh chóng.
Ví dụ tạo một Set:
const mySet = new Set([1, 2, 3, 3, 4, 5]); console.log(mySet); // Output: Set { 1, 2, 3, 4, 5 } (phần tử 3 bị loại bỏ vì trùng lặp)
Sự khác biệt giữa Set và Array
Tiêu chí | Set | Array |
---|---|---|
Lưu trữ giá trị | Chỉ chứa các giá trị duy nhất, không trùng lặp | Có thể chứa giá trị trùng lặp |
Truy cập phần tử | Không hỗ trợ truy cập phần tử bằng chỉ mục (index ) |
Có thể truy cập phần tử bằng chỉ mục (array[index] ) |
Hiệu suất tìm kiếm | Tìm kiếm nhanh hơn do sử dụng cấu trúc bảng băm | Tìm kiếm chậm hơn nếu duyệt qua toàn bộ mảng |
Duyệt phần tử | Sử dụng forEach() , for...of hoặc values() |
Sử dụng forEach() , for...of , map() , v.v. |
Loại bỏ phần tử trùng lặp | Tự động loại bỏ phần tử trùng lặp | Cần kiểm tra và loại bỏ thủ công |
Ví dụ về sự khác biệt:
const arr = [1, 2, 2, 3, 4, 4, 5]; const uniqueSet = new Set(arr); console.log([...uniqueSet]); // Output: [1, 2, 3, 4, 5] (chuyển Set thành mảng)
Khi nào nên sử dụng Set thay vì Array?
- Khi cần lưu trữ danh sách không trùng lặp: Nếu bạn cần một danh sách mà mỗi phần tử xuất hiện duy nhất, Set là lựa chọn tối ưu thay vì Array.
- Khi cần kiểm tra nhanh một giá trị có tồn tại hay không: Set có hiệu suất kiểm tra sự tồn tại của phần tử tốt hơn Array do sử dụng bảng băm.
- Khi muốn loại bỏ trùng lặp từ một danh sách nhanh chóng: Chuyển đổi một mảng thành Set giúp loại bỏ các phần tử trùng lặp một cách dễ dàng.
- Khi không cần truy cập phần tử bằng chỉ mục: Nếu bạn cần truy xuất phần tử dựa trên vị trí, hãy sử dụng Array thay vì Set.
Ví dụ thực tế:
const emails = ["[email protected]", "[email protected]", "[email protected]", "[email protected]"]; const uniqueEmails = new Set(emails); console.log([...uniqueEmails]); // Output: ['[email protected]', '[email protected]', '[email protected]']
Khởi tạo và sử dụng Set trong JavaScript
Cách tạo một Set bằng new Set()
Trong JavaScript, Set là một đối tượng được sử dụng để lưu trữ các giá trị duy nhất, tức là không có phần tử nào bị trùng lặp.
Để tạo một Set, ta sử dụng từ khóa new Set()
như sau:
const mySet = new Set(); // Tạo một Set rỗng console.log(mySet); // Output: Set(0) {}
Ngoài ra, ta cũng có thể khởi tạo một Set với một mảng hoặc một tập hợp các giá trị ban đầu:
const numbers = new Set([1, 2, 3, 4, 5]); console.log(numbers); // Output: Set(5) { 1, 2, 3, 4, 5 }