Set.prototype.symmetricDifference()

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 symmetricDifference() 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 hoặc set đã cho, nhưng không có trong cả hai.

Cú pháp

js
symmetricDifference(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 hoặc other, nhưng không có trong cả hai.

Mô tả

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

AB=(AB)(BA)A\ominus B = (A\setminus B)\cup(B\setminus A)

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

A Venn diagram where two circles overlap. The symmetric difference of A and B is the region contained by either circle but not both.

symmetricDifference() 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 đó, 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, và tất cả các phần tử trong other không thấy trong this.

Thứ tự các phần tử trong set được trả về là trước tiên là các phần tử trong this sau đó là các phần tử trong other.

Ví dụ

Sử dụng symmetricDifference()

Ví dụ sau tính hiệu đối xứng giữa tập số chẵn (<10) và tập số chính phương (<10). Kết quả là tập các số hoặc là số chẵn hoặc là số chính phương, nhưng không phải cả hai.

js
const evens = new Set([2, 4, 6, 8]);
const squares = new Set([1, 4, 9]);
console.log(evens.symmetricDifference(squares)); // Set(5) { 2, 6, 8, 1, 9 }

Đặc tả kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-set.prototype.symmetricdifference

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

Xem thêm