Set.prototype.intersection()

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 intersection() 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 cả set này và set đã cho.

Cú pháp

js
intersection(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 cả set này và other.

Mô tả

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

AB={xAxB}A\cap B = \{x\in A\mid x\in B\}

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

A Venn diagram where two circles overlap. The intersection of A and B is the part where they overlap.

intersection() 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ử được tạo ra cũng có mặt trong this.
  • 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ị truthy.

Do cách triển khai này, hiệu quả của intersection() phần lớn phụ thuộc vào kích thước của set nhỏ hơn giữa thisother (giả sử các set có thể được truy cập trong thời gian dưới tuyến tính). Thứ tự các phần tử trong set được trả về giống như của set nhỏ hơn giữa thisother.

Ví dụ

Sử dụng intersection()

Ví dụ sau tính giao giữa tập số lẻ (<10) và tập số chính phương (<10). Kết quả là tập số lẻ là 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.intersection(squares)); // Set(2) { 1, 9 }

Đặc tả kỹ thuật

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

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

Xem thêm