Nếu x trong y javascript
Trong bài viết này, chúng tôi đề cập đến các phương pháp khác nhau để so sánh hai mảng và kiểm tra xem chúng có bằng nhau hay không bằng cách sử dụng javascript. Trong quá trình này, chúng tôi cũng sẽ hiểu những ưu và nhược điểm của các phương pháp khác nhau được sử dụng Show
Nếu bạn chưa quen với khái niệm đẳng thức mảng, mỗi phần của bài viết sẽ hữu ích. Tuy nhiên, nếu bạn ở đây để làm mới kiến thức của mình, hãy chuyển thẳng sang phần triển khai. Mục lục
Giới thiệu về bình đẳng trong javascriptBình đẳng là một chủ đề phức tạp khi nói đến javascript. Về mặt kỹ thuật, có 4 cách để so sánh nếu hai giá trị bằng nhau trong javascript. Trong số này, hai phương thức phổ biến nhất là toán tử ==, được gọi là đẳng thức trừu tượng và toán tử ===, được gọi là đẳng thức nghiêm ngặt. Trước khi đi sâu vào việc kiểm tra sự bằng nhau của mảng, hãy cho chúng tôi hiểu cách các toán tử đẳng thức này hoạt động trong javascript Bình đẳng nghiêm ngặt với ===Cho trước 2 giá trị x và y, hằng đẳng thức chặt chẽ kiểm tra đẳng thức như sau x===y
Trong Javascript, mảng được coi là đối tượng, vì vậy toán tử === chỉ trả về true nếu cả hai mảng có cùng tham chiếu
Bình đẳng trừu tượng Với ==Dưới đây là tổng quan ngắn gọn về cách toán tử == so sánh nếu x và y bằng nhau
So sánh bằng trừu tượng chịu trách nhiệm cho nhiều trường hợp cạnh kỳ lạ mà JavaScript rất nổi tiếng được đề cập nhiều trong bài viết này
Nói chung, bạn luôn nên sử dụng === thay vì == trừ khi bạn tự tin về những gì mình đang làm và có ý tưởng về kết quả mong đợi Mặc dù có 4 cách để kiểm tra xem hai mảng có bằng nhau hay không, nhưng không có cách nào xem xét sự bằng nhau sâu sắc (trong đó bạn so sánh ngay cả nội dung của các đối tượng của mình theo cách đệ quy cho đến khi tất cả những gì bạn cần so sánh là các trường nguyên thủy) giữa các mảng Kiểm tra sự bằng nhau của mảng bằng javascriptDưới đây là 3 cách để kiểm tra xem hai mảng có bằng nhau không 1) Cả hai mảng có cùng độ dài và giá trị của chúng bằng nhauTrong phương pháp này, chúng tôi so sánh nếu mỗi giá trị của a bằng giá trị của b. Chúng ta phải nhớ rằng điều này sẽ hoạt động tốt nếu tất cả các giá trị của mảng a và b là nguyên hàm và không phải đối tượng
2) Bình đẳng sâu sắc với POJO (Đối tượng java cũ đơn giản)Hàm arrayEquals() hoạt động tốt đối với các đối tượng nguyên thủy như đã thấy ở trên, nhưng không phù hợp nếu bạn muốn so sánh các mảng chứa các đối tượng theo giá trị. Hãy cùng xem ví dụ dưới đây
Một cách đơn giản để thực hiện điều này với mã tối thiểu và không có thư viện bên ngoài là sử dụng so sánh chúng bằng JSON của chúng. đầu ra stringify()
Tuy nhiên, có một trường hợp cạnh. Vì không xác định không phải là một giá trị JSON hợp lệ, nên JSON. stringify() chuyển đổi không xác định thành null. Vì vậy, JSON. stringify() đầu ra của các mảng được hiển thị bên dưới sẽ giống nhau mặc dù chúng không giống nhau trong thực tế
3) So sánh các mảng để kiểm tra sự bằng nhau bằng cách sử dụng hàm isequal() của LodashNhư đã thảo luận ở trên, sử dụng JSON. stringify() để so sánh sự bằng nhau của mảng không chỉ gây ra vấn đề không xác định so với null mà còn không tính đến các loại đối tượng. Theo như JSON. stringify(), một đối tượng có hàm toJSON() trả về 25 giống với số 25 Tương tự, một đối tượng tùy chỉnh cũng được coi là giống với POJO khi sử dụng JSON. stringify()
Mặt khác, việc sử dụng hàm isequal() của Lodash sẽ tính đến tất cả những điều này Ghi chú. Lodash là một thư viện JavaScript cung cấp các chức năng tiện ích cho một tác vụ lập trình phổ biến ________số 8lời chia tay.Để kết luận, để so sánh các mảng để kiểm tra sự bằng nhau, hàm isEqual() của Lodash là cách tốt nhất nếu bạn cần tất cả các chuông và còi để kiểm tra xem các đối tượng có cùng lớp không. JSON. phương pháp stringify() hoạt động tốt cho POJO, chỉ cần đảm bảo rằng bạn tính đến null Tại sao JavaScript sử dụng === thay vì ==?Sử dụng === nếu bạn muốn so sánh một vài thứ trong JavaScript, nó được gọi là đẳng thức nghiêm ngặt, điều đó có nghĩa là điều này sẽ trả về true nếu chỉ có cả loại và giá trị giống nhau< . , so there wouldn't be any unwanted type correction for you, if you using == , you basically don't care about the type and in many cases you could face ...
=> trong JS nghĩa là gì?Đó là một tính năng mới được giới thiệu trong ES6 và được gọi là hàm mũi tên . Phần bên trái biểu thị đầu vào của một chức năng và phần bên phải là đầu ra của chức năng đó.
Kết quả của 2 === 2 trong JavaScript là gì?Đẳng thức chuyển đổi kiểu (==) có nghĩa là nó sẽ tự động chuyển đổi biến thành giá trị bất kể kiểu dữ liệu; . Điều này có nghĩa là "2" sẽ bằng 2 ("2" == 2 nó sẽ trả về true).
$() trong JavaScript là gì?$() Hàm $() là viết tắt của phương thức getElementByID , như đã lưu ý ở trên, trả về ID của một đối tượng cụ thể . Nó thường được sử dụng để thao tác các phần tử trong tài liệu. $() cho phép viết mã JavaScript ngắn hơn và hiệu quả hơn. |