Bao gồm vs chứa Javascript
Một trong hai phương pháp có thể làm việc. Array.prototype.filter() mạnh hơn rất nhiều so với Array.prototype.includes(), trong khi phương pháp .includes() dễ đọc hơn và mang lại hiệu suất tốt hơn nhiều Show
Nếu bạn cần biết liệu một mảng JavaScript có chứa một mục hay không, thì bạn có một vài tùy chọn ngoài việc chỉ viết một vòng lặp Giải pháp thay thế rõ ràng nhất là
Nếu bạn cần trả lại mặt hàng phù hợp đầu tiên, bạn sẽ sử dụng Phương thức Nếu sau này bạn cần làm việc với các mục mà bạn đã khớp hoặc thay đổi tiêu chí đưa vào thành một điều kiện tùy ý, bạn sẽ cần sử dụng
Nếu bạn kiểm tra xem mảng được trả về bởi Ngoài ra còn có phương thức liên quan đến
Phương thức Vì vậy, nếu bạn cần kiểm tra xem có mục nào trong mảng khớp với một điều kiện tùy ý hay không, thì Bạn có thể tưởng tượng rằng Hãy xem ví dụ mã JavaScript này minh họa bốn biến thể để tìm hiểu xem một mảng có giá trị nhất định hay không Phương thức mảng JavaScript nào nhanh nhất? C một số chức năng ES6 nổi tiếng được coi là chậm hơn trong các tập dữ liệu lớn so với các vòng lặp Tất nhiên, đối với các tập dữ liệu nhỏ, điều đó không quan trọng lắm - và lo lắng về điều đó sẽ là một trường hợp nghiêm trọng của “tối ưu hóa sớm. ” Để dễ đọc, chúng ta có thể đồng ý rằng Tôi biết bạn cần tốc độ, vì vậy tôi đã chạy các JSBench này. cho tôi các trường hợp thử nghiệm để kiểm tra hiệu suất vi mô của các ví dụ mã ở trên Xem dữ liệu thô dưới dạng GitHub GistChúng tôi có thể thấy rõ ràng trong biểu đồ rằng Khi chúng tôi có hơn 100.000 mặt hàng, Các bài kiểm tra đó đang kiểm tra hiệu suất trường hợp trung bình (mục giữa trong danh sách). Tôi đã bao gồm Kết quả sẽ thay đổi dựa trên môi trường thử nghiệm của bạn. Tôi đang sử dụng Google Chrome mới nhất (Phiên bản 88, 64-bit) trên Windows 10. Tuy nhiên, trước khi tôi so sánh kết quả của mình với dữ liệu khác, hãy nói về thời điểm sử dụng vòng lặp Là hiệu suất tồi tệ hơn nhiều? H dữ liệu của bạn phải lớn đến mức nào thì bạn mới muốn hy sinh khả năng đọc mã để đạt được hiệu suất? Có lẽ lớn hơn bạn nghĩ Đây là bài học rút ra. sử dụng
Với các kết quả trên, bạn sẽ cần hàng trăm nghìn mục trong một mảng để muốn chuyển sang vòng lặp Tại thời điểm đó, bạn có thể chắc chắn muốn chuyển sang Hãy giữ cho nó thật. Bạn không cần tối ưu hóa sớm mã của mình cho đến khi bạn thực sự xử lý hàng trăm nghìn mục trong một mảng. Tại thời điểm đó, hãy cân nhắc chuyển sang vòng lặp Riccardo Polacci đã thực hiện một công việc tuyệt vời khi thảo luận về sự đánh đổi giữa khả năng đọc và hiệu suất với các chức năng ES6 trong một bài báo mà anh ấy đã viết trên Đáng chú ý — The Journal Blog Hiệu suất so với khả năng đọcJavaScript đã và đang phát triển thành một ngôn ngữ dễ đọc hơn. Không có nghi ngờ gì về điều đó, và cũng không có hạiBlog. nhật ký sử dụng. com Tôi đã cố gắng tìm nghiên cứu khác để sao lưu kết quả hiệu suất của mình và Deepak Gupta đã xuất bản dữ liệu thử nghiệm vòng lặp Deepak nhận thấy rằng cho đến khi bạn đạt 100.000 mục trong một mảng, các vòng lặp Dữ liệu của Deepak cho thấy rằng Trong thử nghiệm của mình, tôi thấy rằng Nói cách khác, Chrome V8 gần như chắc chắn sử dụng các tối ưu hóa hiệu suất như bộ nhớ đệm nội tuyến giúp cho Một mảng chứa một triệu mục chiếm khoảng 10 MB trong Chrome, có khả năng lớn hơn bộ đệm L2 của CPU, thường là 256KB-8 MB. Điều đó có nghĩa là mảng thực tế nằm xa CPU hơn nhiều và dữ liệu phải được chuyển từ bộ đệm L2 sang bộ đệm L1 nhỏ trước khi có thể xử lý. Đó là dự đoán tốt nhất của tôi về kết quả Liệu một mảng bao gồm một mục? W kết thúc, chúng tôi nhận thấy rằng phương thức Trong hầu hết các trường hợp, Bộ não của tôi thích giải quyết vấn đề xác định xem một mảng có chứa một mục hay không bằng cách tìm các mục phù hợp bằng cách sử dụng Bằng cách kiểm tra kích thước của mảng đó, tôi biết liệu mảng đó có bao gồm mục hay không, nhưng tôi cũng có thể linh hoạt thay đổi tiêu chí bao gồm một cách dễ dàng. Tất nhiên, có rất nhiều lãng phí ở đó — về mặt sử dụng bộ nhớ và tốc độ xử lý — nếu sau này tôi không bao giờ thực sự sử dụng mảng Công cụ “tốt nhất” cho công việc tìm kiếm ít nhất một mục (i. e. một số mục) trong một mảng phù hợp với tiêu chí tùy ý sẽ là Tất nhiên, nếu tất cả những gì tôi cần làm là kiểm tra xem mảng có chứa một mục cụ thể hay không,. filter() là quá mức cần thiết, như chúng ta đã thấy. Khi bạn có các tập dữ liệu nhỏ, Tùy thuộc vào dự án của bạn, bạn có thể thấy rằng Bạn hoàn toàn nên sử dụng Khi nào nên sử dụng bao gồm hoặc chứa?Làm cách nào để sử dụng "bao gồm" và "chứa" một cách chính xác? . Contain is used to say that an object has something inside it. Bao gồm được sử dụng để mô tả các yếu tố của một nhóm đối tượng/ý tưởng .
Bao gồm có nghĩa là gì trong JavaScript?Phương thức include() thực hiện tìm kiếm phân biệt chữ hoa chữ thường để xác định xem có thể tìm thấy một chuỗi trong chuỗi khác hay không, trả về true hoặc false tùy trường hợp.
Bạn có thể sử dụng bao gồm () với một mảng trong JavaScript không?includes() Bạn có thể sử dụng phương thức include() trong JavaScript để kiểm tra xem một mục có tồn tại trong một mảng hay không . Bạn cũng có thể sử dụng nó để kiểm tra xem một chuỗi con có tồn tại trong một chuỗi không. Nó trả về true nếu tìm thấy mục trong mảng/chuỗi và trả về false nếu mục đó không tồn tại.
Sử dụng cái gì thay vì bao gồm trong JavaScript?indexOf() Hàm Array#indexOf() là một hàm thay thế phổ biến cho hàm include(). Hàm indexOf() trả về chỉ mục đầu tiên trong mảng mà tại đó nó tìm thấy valueToFind hoặc -1 nếu không. |