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

Thêm phần tử vào Set trong JavaScript

Set (ES6+) lưu trữ giá trị duy nhất. Phương thức add(value) thêm phần tử, tự động bỏ qua nếu đã tồn tại.

Cú pháp

set.add(value)
  • Trả về Set object (cho phép chaining: set.add(1).add(2)).
  • Nếu giá trị đã tồn tại, không thêm lại, không báo lỗi.

Ví dụ cơ bản (ES6 Set)

const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(5);
mySet.add(2); // Trùng lặp, bị bỏ qua

console.log(mySet.has(5)); // true
console.log(mySet.has(20)); // false
console.log(mySet.has(1));  // true
console.log(mySet.size);    // 3 (chỉ 3 giá trị duy nhất)

// Chaining
new Set().add(1).add(2).add(3);

Triển khai thủ công (Custom MySet) - học tập

class MySet {
  constructor() {
    this.container = {};
  }
  
  has(val) {
    return this.container.hasOwnProperty(val);
  }
  
  add(val) {
    if (!this.has(val)) {
      this.container[val] = val;
      return true;
    }
    return false;
  }
  
  // ... delete, clear, forEach, static union/difference
}

Lưu ý

  • Set giữ **thứ tự insertion order** (theo spec ES6).
  • Giá trị NaN được coi là bằng nhau (chỉ có 1 NaN trong Set).
  • +0 và -0 được coi là khác nhau (trong SameValueZero thì cùng, nhưng Object key thì khác? Thực tế Set dùng SameValueZero: +0 === -0 → true, chỉ lưu 1).
  • Object/Array được so sánh bằng **reference** (khác object = khác giá trị).