Giao điểm javascript của hai mảng
Chúng ta có hai mảng Số và chúng ta được yêu cầu viết một hàm, chẳng hạn như giao điểm () tính toán giao điểm của chúng và trả về một mảng chứa các phần tử giao nhau theo bất kỳ thứ tự nào. Mỗi phần tử trong kết quả sẽ xuất hiện nhiều lần như nó hiển thị trong cả hai mảng Show Ví dụ - Nếu, Input: arr1 = [1,2,3,1], arr2 = [1,3,1] Output: [1,3,1] Tiếp cậnNếu các mảng đã được sắp xếp, chúng ta có thể đã sử dụng cách tiếp cận hai con trỏ với cả hai con trỏ ban đầu đều trỏ đến 0 ở đầu mảng tương ứng và chúng ta có thể tiến hành tăng con trỏ tương ứng và đó sẽ là phức hợp O(m+n) w. r. t. thời gian trong đó m và n là kích thước của mảng Nhưng vì chúng ta có các mảng chưa được sắp xếp nên không có logic trong việc sắp xếp các mảng và sau đó sử dụng phương pháp này, chúng ta sẽ kiểm tra mọi giá trị của giá trị đầu tiên so với giá trị thứ hai và xây dựng một mảng giao nhau. Điều này sẽ khiến chúng tôi mất O(n^2) thời gian Đối tượng 8 chỉ lưu trữ các giá trị duy nhất, do đó, việc chuyển đổi mảng thành 8 sẽ tự động loại bỏ tất cả các giá trị trùng lặpChúng tôi đã làm điều này bởi vì chúng tôi không muốn giao điểm của chúng tôi chứa các giá trị trùng lặp, e. g. 0Sau đó, chúng tôi đã sử dụng toán tử trải rộng (. ) để chuyển đổi 8 trở lại thành một mảng và được gọi là phương thức 2 trên mảngHàm chúng tôi đã chuyển đến Mảng. phương thức lọc được gọi với từng phần tử của mảng Trên mỗi lần lặp, chúng tôi kiểm tra xem phần tử hiện tại có được chứa trong 8 thứ hai khôngPhương thức 80 trả về một mảng chứa các phần tử mà hàm kiểm tra trả về giá trị trung thực Ví dụ: nếu hai mảng là 5 và 6, thì đầu ra phải là 7, vì đó là hai phần tử duy nhất có trong cả hai mảngVấn đề này là một ví dụ tốt để sử dụng các tập hợp. Tập hợp là một đối tượng có các giá trị duy nhất và đặc biệt hữu ích trong các vấn đề mà bạn được yêu cầu trả về các phần tử duy nhất. Bạn có thể tìm hiểu thêm về bộ tại đây Trong bài đăng này, tôi sẽ thảo luận về cách tôi muốn tiếp cận vấn đề này, sau đó mã hóa giải pháp trong JavaScript Tiếp cận vấn đềTrong vấn đề này, chúng tôi đã cung cấp hai mảng, cả hai có thể có các số lặp lại trong đó và chúng tôi chỉ muốn trả về các giá trị được chia sẻ, duy nhất. Một cách để giải quyết vấn đề này là biến mảng đầu tiên thành một tập hợp, điều này sẽ loại bỏ mọi giá trị trùng lặp Biến một mảng thành một tập hợp thực sự là một quá trình rất ngắn. Giả sử bạn có một mảng tên là 8, tương đương với 0 và muốn tạo một tập hợp dựa trên mảng đó
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Dựa trên tuyên bố trên, 1 sẽ bằng 2Khi chúng ta biến mảng đã cho đầu tiên thành một tập hợp, chúng ta có thể đi qua từng phần tử của mảng đã cho thứ hai và kiểm tra xem nó có trong tập hợp không. Nếu có, chúng tôi sẽ thêm nó vào một mảng kết quả, mà chúng tôi sẽ trả về ở cuối. Chúng tôi cũng muốn xóa phần tử đó khỏi tập hợp, để nếu mảng thứ hai có giá trị trùng lặp, chúng tôi không thêm nó vào mảng kết quả hai lần Để kiểm tra xem một tập hợp có phần tử hay không, chúng ta có thể sử dụng phương thức 3, phương thức này trả về giá trị boolean (đúng hoặc sai). Ví dụ: nếu chúng tôi vẫn đang làm việc với 1 từ bên trên
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Để xóa một phần tử khỏi một tập hợp, chúng ta có thể sử dụng phương thức 5, phương thức này sẽ xóa một phần tử cụ thể khỏi một tập hợp. Để tiếp tục với cùng một ví dụ
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Mã hóa giải phápVới các phương pháp trên, chúng ta có thể bắt đầu bằng cách tạo một tập hợp mới dựa trên 6, đây là mảng được nhập đầu tiên. Chúng ta có thể làm điều này bằng cách đặt một biến mới có tên là 7 bằng với 8Chúng ta cũng có thể tạo một mảng mới có tên là 9, chúng ta sẽ bắt đầu mảng này dưới dạng một mảng trống. Mảng này sẽ được trả về ở cuối hàm, vì vậy chúng ta có thể đưa vào câu lệnh kết quả ngay bây giờ 4Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bây giờ, chúng tôi sẽ muốn kiểm tra từng giá trị của 0 để xem liệu nó có trong 7 không. Để làm điều này, chúng ta có thể thiết lập một vòng lặp for, vòng lặp này sẽ lặp qua từng giá trị của 0 và do đó sẽ đi từ 0 cho đến hết độ dài của mảng 0 9Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bên trong vòng lặp for, chúng ta sẽ muốn kiểm tra xem tập hợp có mỗi phần tử của 0 không. Mỗi phần tử của 0 được truy cập bằng 6. Sau đó, chúng ta có thể tạo một câu lệnh có điều kiện để xem liệu tập hợp có phần tử đó hay không, sử dụng 7Nếu điều này trả về true, thì chúng ta sẽ muốn làm hai việc. trước tiên, chúng tôi sẽ muốn thêm phần tử vào mảng kết quả, sử dụng 8. Sau đó, chúng tôi sẽ muốn xóa phần tử đó khỏi 7, để chúng tôi không thêm các giá trị trùng lặp vào mảng 9 7Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Điều này sẽ trả về một mảng chứa các giá trị duy nhất được chia sẻ bởi cả hai mảng -- Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi hoặc giải pháp thay thế nào để tìm giao điểm của hai mảng Làm cách nào để có giao điểm của hai mảng trong JavaScript?Trong chương trình trên, một phép giao được thực hiện giữa hai mảng bằng cách sử dụng phương thức filter() . Phương thức lọc lặp qua một mảng và trả về các phần tử 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 phương thức indexOf().
Làm cách nào để lấy các đối tượng chung từ hai mảng trong JavaScript?Phương pháp 1. . Đầu tiên, lặp qua tất cả các phần tử trong một trong các mảng Sau đó, đối với mỗi phần tử trong mảng này, lặp qua tất cả các phần tử của mảng khác Nếu có phần tử thì thêm phần tử này vào mảng mới Nếu không, hãy tiếp tục với phần tử tiếp theo Làm cách nào để kết hợp hai mảng đối tượng trong JavaScript?Để có được sự kết hợp của hai mảng. const arr1 = ['a', 'b', 'c']; . bộ lọc( phần tử =>. mảng2. gồm(phần tử) ); .
Bạn có thể ánh xạ hai mảng trong JavaScript không?Cách tiếp cận. Đối với điều này, chúng ta có thể tạo hai mảng, trong đó một mảng chứa các phần tử mảng sẽ được ánh xạ và mảng thứ hai lưu trữ tất cả các giá trị trả về của hàm tương ứng. We can use the JavaScript Array push() method to push the return values of the function in the output array. |