Set.prototype.difference()

Baseline 2024
Newly available

Since June 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Phương thức difference() của các instance Set nhận một set và trả về một set mới chứa các phần tử có trong set này nhưng không có trong set đã cho.

Cú pháp

js
difference(other)

Tham số

other

Một đối tượng Set, hoặc đối tượng set-like.

Giá trị trả về

Một đối tượng Set mới chứa các phần tử có trong set này nhưng không có trong other.

Mô tả

Trong ký hiệu toán học, hiệu (difference) được định nghĩa như sau:

AB={xAxB}A\setminus B = \{x\in A\mid x\notin B\}

Và bằng biểu đồ Venn:

A Venn diagram where two circles overlap. The difference of A and B is the part of A that is not overlapping B.

difference() chấp nhận các đối tượng set-like làm tham số other. Nó yêu cầu this phải là một instance Set thực sự, vì nó trực tiếp lấy dữ liệu cơ bản được lưu trữ trong this mà không gọi bất kỳ code người dùng nào. Sau đó, hành vi của nó phụ thuộc vào kích thước của thisother:

  • Nếu có nhiều phần tử trong this hơn other.size, thì nó duyệt other bằng cách gọi phương thức keys() của nó, và xây dựng một set mới với tất cả các phần tử trong this không thấy trong other.
  • Ngược lại, nó duyệt các phần tử trong this, và xây dựng một set mới với tất cả các phần tử e trong this khiến other.has(e) trả về giá trị falsy.

Thứ tự các phần tử trong set được trả về giống như trong this.

Ví dụ

Sử dụng difference()

Ví dụ sau tính hiệu giữa tập số lẻ (<10) và tập số chính phương (<10). Kết quả là tập số lẻ không phải số chính phương.

js
const odds = new Set([1, 3, 5, 7, 9]);
const squares = new Set([1, 4, 9]);
console.log(odds.difference(squares)); // Set(3) { 3, 5, 7 }

Đặc tả kỹ thuật

Thông số kỹ thuật
ECMAScript® 2027 Language Specification
# sec-set.prototype.difference

Tương thích trình duyệt

Xem thêm