Hướng dẫn how many ways can you compare objects in javascript? - có bao nhiêu cách bạn có thể so sánh các đối tượng trong javascript?
Thật đơn giản để so sánh các giá trị nguyên thủy trong JavaScript. Chỉ cần sử dụng bất kỳ toán tử EQality nào có sẵn, ví dụ như bình đẳng nghiêm ngặt: Show
Các đối tượng, tuy nhiên, khó so sánh hơn vì chúng là dữ liệu có cấu trúc. Trong bài đăng này, bạn sẽ học cách so sánh chính xác các đối tượng trong JavaScript. 1. Bình đẳng tham chiếuJavaScript cung cấp 3 cách để so sánh các giá trị:
Khi so sánh các đối tượng bằng cách sử dụng bất kỳ điều nào ở trên, so sánh đánh giá thành 1 chỉ khi tham chiếu giá trị được so sánh cùng một thể hiện đối tượng. Đây là sự bình đẳng tham khảo. Hãy xác định các đối tượng 2 và 3 và xem sự bình đẳng tham khảo trong thực tế:
4 đánh giá thành 1 vì cả hai toán hạng đều chỉ vào cùng một thể hiện đối tượng 2. Mặt khác, 7 đánh giá thành 8 vì các toán hạng 2 và 3 là các trường hợp đối tượng khác nhau. Điều thú vị là 2 và 3 Đối tượng có cùng nội dung: cả hai đều có một thuộc tính 3 với giá trị 4. Tuy nhiên, thậm chí so sánh các đối tượng của cùng một cấu trúc, 7 đánh giá thành 8. Bình đẳng tham chiếu là hữu ích khi bạn muốn so sánh các tài liệu tham khảo đối tượng, thay vì nội dung của chúng. Nhưng trong hầu hết các tình huống bạn cần so sánh nội dung thực tế của các đối tượng: các thuộc tính và giá trị của chúng. Hãy xem làm thế nào để làm điều đó. 2. So sánh thủ côngCách rõ ràng để so sánh các đối tượng bằng nội dung là đọc các thuộc tính và so sánh chúng theo cách thủ công. Ví dụ: chúng ta hãy viết một chức năng đặc biệt 7 so sánh 2 đối tượng anh hùng:
7 truy cập vào thuộc tính 3 của cả hai đối tượng và so sánh các giá trị của chúng. Nếu các đối tượng được so sánh có một vài thuộc tính, tôi thích viết các hàm so sánh như 7. Các chức năng như vậy có hiệu suất tốt - chỉ một vài người truy cập tài sản và nhà khai thác bình đẳng có liên quan đến việc so sánh. So sánh thủ công yêu cầu trích xuất thủ công các thuộc tính - đối với các đối tượng đơn giản, đó không phải là vấn đề. Nhưng để so sánh các đối tượng lớn hơn (hoặc các đối tượng của cấu trúc chưa biết), so sánh thủ công không thuận tiện vì nó đòi hỏi nhiều mã nồi hơi. Hãy xem làm thế nào sự bình đẳng nông của các đối tượng có thể giúp ích. 3. Bình đẳng nôngTrong quá trình kiểm tra bình đẳng nông của các đối tượng, bạn nhận được danh sách các thuộc tính (sử dụng 1) của cả hai đối tượng, sau đó kiểm tra các giá trị của các thuộc tính cho sự bình đẳng. Đây là việc thực hiện kiểm tra bình đẳng nông:
Bên trong hàm, 2 và 3 là các mảng chứa tương ứng tên thuộc tính của 4 và 5. 6 Chu kỳ lặp lại trên các khóa và so sánh từng thuộc tính của 4 và 5 cho bình đẳng 9. Hãy sử dụng bình đẳng nông để so sánh các đối tượng với nhiều thuộc tính:
0 trả về 1 vì các đối tượng 2 và 3 có cùng các thuộc tính ( 3 và 5) với cùng các giá trị. Ở phía bên kia, 6 trả về 8 kể từ 2 và 9 có các thuộc tính khác nhau. Nếu các giá trị của các thuộc tính của các đối tượng để so sánh là các giá trị nguyên thủy, kiểm tra bình đẳng nông là cách để đi. Nhưng các đối tượng trong JavaScript có thể được lồng nhau. Trong trường hợp như vậy, thật không may, sự bình đẳng nông không hoạt động tốt. Hãy thực hiện kiểm tra bình đẳng nông trên các đối tượng có các đối tượng lồng nhau:
Lần này, ngay cả cả 2 và 3 có cùng một nội dung, 0 trả về 8. Các đối tượng lồng nhau 4 và 5 là các thể hiện đối tượng khác nhau. Do đó, bình đẳng nông cho rằng 4 và 5 là các giá trị khác nhau. May mắn thay, sự bình đẳng sâu sắc so sánh chính xác các đối tượng chứa các đối tượng khác. Hãy xem nó hoạt động như thế nào. 4. Bình đẳng sâu sắcSự bình đẳng sâu sắc tương tự như bình đẳng nông, nhưng với một sự khác biệt. Trong quá trình kiểm tra nông, nếu các thuộc tính được so sánh là đối tượng, kiểm tra bình đẳng nông đệ quy được thực hiện trên các đối tượng lồng nhau này. Hãy xem việc thực hiện kiểm tra bình đẳng sâu:
Dòng được tô sáng 8 chỉ ra rằng ngay khi các thuộc tính được so sánh là đối tượng, một cuộc gọi đệ quy bắt đầu xác minh xem các đối tượng lồng nhau cũng bằng nhau. Bây giờ, chúng ta hãy xem một ví dụ về 9:
Hàm bình đẳng sâu xác định chính xác rằng 2 và 3 có cùng các thuộc tính và giá trị, bao gồm cả sự bình đẳng của các đối tượng lồng nhau 4 và 5. Để so sánh sâu sắc các đối tượng tôi khuyên bạn nên sử dụng:
5. Tóm tắtBình đẳng tham chiếu (sử dụng 0) xác định xem các toán hạng có phải là cùng một thể hiện đối tượng hay không. Kiểm tra bình đẳng thủ công yêu cầu so sánh thủ công các giá trị của các thuộc tính. Mặc dù séc này yêu cầu viết bằng tay các thuộc tính để so sánh, tôi thấy phương pháp này thuận tiện vì tính đơn giản của nó. Khi các đối tượng được so sánh có rất nhiều thuộc tính hoặc cấu trúc của các đối tượng được xác định trong thời gian chạy, một cách tiếp cận tốt hơn là sử dụng kiểm tra nông. Cuối cùng, nếu các đối tượng được so sánh có các đối tượng lồng nhau, kiểm tra bình đẳng sâu là cách để đi. Hy vọng, bài viết của tôi đã giúp bạn hiểu các chi tiết cụ thể về việc kiểm tra các đối tượng trong JavaScript. Vấn đề chính khi sử dụng 9 để so sánh các đối tượng là gì? Có bao nhiêu cách bạn có thể so sánh hai đối tượng trong JavaScript?JavaScript cung cấp 3 cách để so sánh các giá trị: Toán tử bình đẳng nghiêm ngặt === Toán tử bình đẳng lỏng lẻo == Object.is () hàm.3 ways to compare values: The strict equality operator === The loose equality operator == Object.is() function.
Chúng ta có thể so sánh các đối tượng trong JavaScript không?Chúng tôi không thể thực hiện toán tử == hoặc hoặc người vận hành ===, để so sánh hai đối tượng.Cách tốt hơn để thực hiện so sánh là sử dụng JSON.Chuỗi và so sánh các đối tượng.. The better way to do the comparison is to use JSON. Stringify and compare the objects.
Tại sao JavaScript không thể so sánh hai đối tượng?Thông thường, khi bạn so sánh các loại dữ liệu như INT và chuỗi trong JavaScript, bạn sử dụng các toán tử bình đẳng (== và ===).Tuy nhiên, so sánh các đối tượng với == và === sẽ không hoạt động.Để khắc phục điều này, một tùy chọn là xâu chuỗi cả hai đối tượng và sau đó sử dụng các toán tử bình đẳng.stringify both objects and then use the equality operators.
Bốn loại đối tượng JavaScript là gì?Đối tượng JavaScript.. Booleans có thể là đối tượng (nếu được xác định với từ khóa mới). Số có thể là đối tượng (nếu được xác định với từ khóa mới). Chuỗi có thể là đối tượng (nếu được xác định với từ khóa mới). Ngày luôn là đối tượng .. Toán học luôn là đối tượng .. Biểu thức chính quy luôn là đối tượng .. Mảng luôn là đối tượng .. |