Trong ví dụ này, bạn sẽ học cách viết một chương trình JavaScript sẽ thực hiện giao nhau giữa hai mảng.
Để hiểu ví dụ này, bạn nên có kiến thức về các chủ đề lập trình JavaScript sau:
- Bộ lọc mảng Javascript ()
- JavaScript Array push ()
- JavaScript Set và WeakSet
Ví dụ 1: Thực hiện Giao điểm bằng Tập hợp
// program to perform intersection between two arrays using Set // intersection contains the elements of array1 that are also in array2 function performIntersection(arr1, arr2) ( // converting into Set const setA = new Set(arr1); const setB = new Set(arr2); let intersectionResult = (); for (let i of setB) ( if (setA.has(i)) ( intersectionResult.push(i); ) ) return intersectionResult; ) const array1 = (1, 2, 3, 5, 9); const array2 = (1, 3, 5, 8); const result = performIntersection(array1, array2); console.log(result);
Đầu ra
(1, 3, 5)
Trong chương trình trên, một giao điểm được thực hiện giữa array1
và array2
.
- Các phần tử của mảng được chuyển đổi thành
Set
các phần tử bằng cách sử dụng hàmnew Set()
tạo. - Các
for… of
vòng lặp được sử dụng để lặp qua thứ haiSet
yếu tố này. - Các
has()
phương pháp được sử dụng để kiểm tra xem phần tử là trong lần đầu tiênSet
. - Nếu phần tử có trong phần tử đầu tiên
Set
, phần tử đó sẽ được thêm vào mảng giao diện tử bằngpush()
phương thức này.
Ví dụ 2: Thực hiện Giao điểm bằng phương thức filter ()
// program to perform intersection between two arrays function performIntersection(arr1, arr2) ( const intersectionResult = arr1.filter(x => arr2.indexOf(x) !== -1); return intersectionResult; ) const array1 = (1, 2, 3, 5, 9); const array2 = (1, 3, 5, 8); const result = performIntersection(array1, array2); console.log(result);
Đầu ra
(1, 3, 5)
Trong chương trình trên, một giao điểm được thực hiện giữa hai mảng bằng filter()
phương thức này. Phương thức bộ lọc lặp qua một mảng và trả về các phần tử của mảng vượt qua điều kiện đã cho.
- Mỗi phần tử của mảng đầu tiên được so sánh với mảng thứ hai bằng
indexOf()
phương thức này. - Các
arr2.indexOf(x)
tìm kiếm phương pháp arr2 và trả về vị trí của sự xuất hiện đầu tiên của arr1. Nếu không tìm thấy giá trị, nó sẽ trả về -1 . - Tất cả các phần tử nằm trong cả hai mảng đều được
filter()
phương thức trả về .
Lưu ý: Bạn cũng có thể sử dụng includes()
phương pháp này để kiểm tra xem các phần tử của mảng có nằm trong cả hai mảng hay không.
const intersectionResult = arr1.filter(x => arr2.includes(x))