Lọc và tìm hiệu suất javascript
Một câu hỏi phỏng vấn phổ biến mà các nhà phát triển JavaScript thường được hỏi là giải thích sự khác biệt giữa các phương thức find() và filter() Show
Trong hướng dẫn hôm nay, tôi sẽ hướng dẫn bạn những phương pháp này là gì và khi nào bạn nên sử dụng chúng Phương pháp filter() là gì?Phương thức này trả về tất cả các phần tử của mảng thỏa mãn điều kiện được chỉ định trong hàm gọi lại Hãy xem ví dụ về cách nó thực sự hoạt động ví dụ về bộ lọc()Các bạn kiểm tra kết quả của ví dụ trên thì giá trị của y là mảng có 1 phần tử thỏa mãn điều kiện. Điều này là do phương thức filter() lặp lại trên tất cả các phần tử của mảng và sau đó trả về một mảng đã lọc thỏa mãn điều kiện đã chỉ định Phương pháp find() là gì?Phương thức này trả về phần tử đầu tiên của mảng thỏa mãn điều kiện được chỉ định trong hàm gọi lại Hãy xem ví dụ về cách nó thực sự hoạt động ví dụ về find()Bây giờ, nếu bạn thấy đầu ra của ví dụ trên, giá trị của y là 1. Điều này là do phương thức find() tìm kiếm phần tử đầu tiên trong mảng thỏa mãn điều kiện đã chỉ định Sự khác biệt chính giữa các ví dụ trên là
Các trường hợp sử dụng cho find() và filter()Khi bạn gặp trường hợp sử dụng trong đó dự kiến sẽ trả về nhiều hơn 1 phần tử và bạn muốn thực hiện thao tác trên tất cả các phần tử, thì bạn có thể sử dụng phương thức filter(). Nhưng nếu bạn muốn chỉ một phần tử duy nhất được trả về từ mảng, thì bạn có thể sử dụng find() và tránh lặp lại thêm Hãy xem xét các ví dụ về cả hai trường hợp sử dụng 1. bộ lọc () ví dụ về trường hợp sử dụngVí dụ về trường hợp sử dụng filter()Trong ví dụ trên, 2 có ý nghĩa hơn vì bạn muốn lặp lại tất cả các phần tử của mảng để tìm các phần tử chia hết cho 22. ví dụ về trường hợp sử dụng find()Ví dụ về trường hợp sử dụng find()Trong ví dụ trên, 3 có ý nghĩa hơn vì chỉ có 1 nhân viên có 4 là 5, vì vậy, find() giúp tránh lặp lại đối tượng thứ 3 trong mảngCảm ơn vì đã đọcNếu bạn thấy bài viết này hữu ích, hãy chia sẻ nó với bạn bè và đồng nghiệp của bạn QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO Kỹ sư giao diện người dùng Nếu bài viết này hữu ích, hãy tweet nó Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu Mảng là một trong những cấu trúc dữ liệu được sử dụng nhiều nhất trong thế giới Javascript để thực hiện bất kỳ thứ tự hoạt động nào. Gần đây, chúng tôi đã làm việc với các câu lệnh tìm kiếm khác nhau, duyệt/tìm thuật toán và tìm ra những cách tốt nhất để sử dụng các phương thức mảng dựng sẵn có sẵn để giảm nỗ lực với hiệu suất tốt hơn Ở đây chúng ta sẽ thảo luận về nguyên tắc hoạt động của năm phương thức mảng JS 'find', 'filter', 'findIndex', 'some' và 'every'. const trái cây = [{item. “quả táo”, giá cả. “50”},,{mục. "màu cam", giá. “30”}, {mục. “nho”, giá. “40”}, {mục. "màu cam", giá. “80”}] Trường hợp sử dụng 1. Tìm thấy. Trường hợp sử dụng 2. Lọc. Trường hợp sử dụng 3. Tìm Index. Trường hợp sử dụng 4. Một số. Trường hợp sử dụng 5. Mọi. Bản tóm tắt. Tất cả các đầu ra trên cũng có thể đạt được với forEach, Map hoặc các phương thức mảng khác. Nhưng chúng ta cần đủ thông minh để hiểu tác động đến hiệu suất thời gian và không gian và đảm bảo chọn đúng bộ phương pháp cho các yêu cầu nhất định Cái nào tìm hoặc lọc nhanh hơn trong JavaScript?Ưu điểm chính của việc sử dụng find() trong những trường hợp đó là tìm trả về ngay khi tìm thấy kết quả phù hợp , nhưng bộ lọc sẽ chạy .
Tìm hay lọc tốt hơn?Khi bạn gặp một trường hợp sử dụng cần trả về nhiều hơn 1 phần tử và bạn muốn thực hiện thao tác trên tất cả các phần tử, thì bạn có thể sử dụng phương thức filter(). Nhưng nếu bạn chỉ muốn trả về một phần tử duy nhất từ mảng, thì bạn có thể sử dụng find() và tránh lặp lại thêm .
Tìm JavaScript có nhanh hơn vòng lặp for không?Rõ ràng là hàm find() gốc nhanh hơn thuật toán vòng lặp .
Cái gì nhanh hơn cho hoặc bộ lọc?for là nhanh nhất cho đến khi chúng ta đạt khoảng 33. Dài 5M , nhưng trở thành chậm nhất trước đó, trong đó forOf trở thành người chiến thắng rõ ràng về tốc độ. Cả for và forOf đều đạt một điểm ở đó tốc độ tăng mạnh, trong đó forEach và bộ lọc tăng tuyến tính trong toàn bộ bài kiểm tra. |