Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tạo Set trong JavaScript

Set là cấu trúc dữ liệu lưu trữ **giá trị duy nhất** (unique), không trùng lặp, không đảm bảo thứ tự (nhưng ES6 giữ insertion order).

1. Tạo Set ES6 (Khuyên dùng)

// Set rỗng
const set1 = new Set();

// Set từ iterable (array, string, set khác...)
const set2 = new Set([1, 2, 5, 6]);
const set3 = new Set("hello"); // Set {'h', 'e', 'l', 'o'}
const set4 = new Set(document.querySelectorAll('div')); // Set của element nodes

2. Kiểm tra thành viên (Membership test)

const mySet = new Set([1, 2, 5, 6]);
console.log(mySet.has(5));  // true
console.log(mySet.has(20)); // false
console.log(mySet.has(1));  // true

3. Triển khai thủ công (Custom MySet) - để hiểu bản chất

class MySet {
  constructor() {
    this.container = {}; // Object làm hash map: key = value, value = value
  }
  
  // Kiểm tra tồn tại
  has(val) {
    return this.container.hasOwnProperty(val);
  }
  
  // Hiển thị (debug)
  display() {
    console.log(this.container);
  }
  
  // Thêm, xóa, clear, forEach, static union/difference...
}

Khi nào dùng Set?

  • Lưu danh sách **unique values** (loại bỏ trùng lặp tự động).
  • Kiểm tra **membership** (có tồn tại không?) hiệu năng O(1) trung bình.
  • Thực hiện phép toán tập hợp: **Union, Intersection, Difference** (cần tự implement hoặc dùng library).
  • Khi **thứ tự không quan trọng** (nhưng ES6 giữ insertion order).

Các method chính (ES6 Set API)

MethodMô tả
add(val)Thêm giá trị, trả về Set
delete(val)Xóa giá trị, trả true/false
has(val)Kiểm tra tồn tại, trả true/false
clear()Xóa tất cả
forEach(cb)Duyệt từng giá trị
values()Trả iterator (giá trị = key)
keys()Alias của values()
entries()Trả iterator [value, value]
sizeProperty: số lượng phần tử