So sánh 2 mảng JS

Bạn đang xem: NEW so sánh 2 mảng trong javascript. Tại AZ Pet

Tôi muốn so sánh hai mảng … một cách lý tưởng, hiệu quả. Không có gì lạ, chỉ đúng là chúng giống hệt nhau, và ngược lại là sai. Không có gì ngạc nhiên khi toán tử so sánh dường như không hoạt động.

Bạn đang xem: So sánh 2 mảng trong javascript.

var a1 = đầu tiên,2,3>; var a2 = đầu tiên,2,3>; bàn điều khiển.Báo chí[a1==a2]; // Trả về false bàn điều khiển.Báo chí[JSON.xâu chuỗi[a1] ==JSON.xâu chuỗi[a2]]; // Trả về true

JSON mã hóa từng mảng, nhưng có cách nào nhanh hơn hoặc “tốt hơn” để đơn giản so sánh các mảng mà không cần phải lặp lại từng giá trị không?

mảng json javascript chia sẻ | xem hỏi 2:27:57 PM 20/10/2011 Phùng Hương Phùng Hương 5 30 595

5

Trước tiên, bạn có thể so sánh độ dài của chúng và liệu chúng có bằng nhau với từng giá trị hay không.

– Ly Mai Link 2:29:40 PM 20/10/2011
43

Điều gì làm cho hai bảng bằng nhau đối với bạn? Các yếu tố giống nhau? Thứ tự các phần tử giống nhau? Mã hóa JSON chỉ hoạt động miễn là phần tử mảng có thể được tuần tự hóa thành JSON. Nếu tấm ván có thể chứa các đồ vật, bạn sẽ đi sâu bao nhiêu? Khi nào thì hai vật “bằng nhau”?

– Phạm Diệp Vy 14:31:12 20/10/2011
đầu tiên

Có thể có bản sao của stackoverflow.com/questions/27030/…

– Phan Văn Nhị 14:33:25 20/10/2011 33 FelixKling, định nghĩa “bình đẳng” chắc chắn là một chủ đề phức tạp, nhưng đối với những người đến với JavaScript từ các ngôn ngữ cấp cao hơn, không có lý do gì cho sự điên rồ [==] == false. – Trịnh Hải Yến 17:52:59 16/03/2014 đầu tiên AlexD trông giống như các mảng sử dụng bình đẳng tham chiếu là những gì bạn mong đợi. Sẽ thật tệ nếu bạn không làm được – Trịnh Lan Phương 08:24:45 29/08/2014

thêm 1 bình luận |

49 câu trả lời 49

hoạt động hữu ích lâu đời nhất
790

Để so sánh các mảng, hãy lặp qua chúng và so sánh từng giá trị:

So sánh các bảng:

// Cảnh báo khi thay thế một phương thức hiện có nếu như[Triển khai.nguyên mẫu.bằng] bàn điều khiển.ngăn ngừa[“Thay thế Array.prototype.equals hiện có. Nguyên nhân có thể: API mới xác định phương thức, có xung đột khung hoặc bạn có bao gồm kép trong mã của mình.”]; // đính kèm phương thức .equals vào nguyên mẫu mảng để gọi nó trên bất kỳ mảng nào Triển khai.nguyên mẫu.bằng = một chức năng [triển khai] khác nếu như [điều nàytôi> ! = triển khaitôi>] ! = Trở lại để sai; } } Trở lại để đúng vậy; } // Ẩn phương thức vòng lặp for-in Sự vật.setProperty[Triển khai.nguyên mẫu, “bằng”, ];

Sử dụng:

đầu tiên, 2, 3, 4>>bằng[đầu tiên, 2, 3, 2>>] === sai; đầu tiên, “2,3”>.bằng[đầu tiên, 2, 3>] === sai; đầu tiên, 2, 3, 4>>bằng[đầu tiên, 2, 3, 4>>] === đúng vậy; đầu tiên, 2, đầu tiên, 2>.

Xem thêm: Cách Sửa Lỗi Itaxviewer Mới Nhất, Cách Sửa Lỗi Khi Mở File Xml trên Itaxviewer

bằng[đầu tiên, 2, đầu tiên, 2>] === đúng vậy;

Bạn có thể nói ” Nhưng nhanh hơn nhiều so với chuỗi – không có vòng lặp … “, thì bạn nên biết rằng có các vòng lặp. Vòng lặp đệ quy đầu tiên chuyển đổi mảng thành một chuỗi và vòng lặp thứ hai so sánh hai chuỗi. Vì vậy, phương pháp Nó nhanh hơn so với sử dụng một chuỗi .

Tôi nghĩ rằng lượng dữ liệu lớn hơn nên luôn được lưu trữ trong các mảng chứ không phải trong các đối tượng. Tuy nhiên, nếu bạn sử dụng các đối tượng, chúng cũng có thể được so sánh một phần. Đây là cách thực hiện:

So sánh các đối tượng:

Tôi đã nói ở trên, hai Trường hợp các đối tượng sẽ không bao giờ bằng nhau, ngay cả khi chúng chứa cùng một dữ liệu tại thời điểm này:

[] == [] //sai

Điều này có lý do, vì có thể có các biến private trong các đối tượng.

Tuy nhiên, nếu bạn chỉ sử dụng cấu trúc đối tượng để giữ dữ liệu, thì vẫn có thể so sánh:

Sự vật.nguyên mẫu.bằng = một chức năng[object2] // Kiểm tra loại phiên bản khác nếu như [Loại điều nàypropName> ! = Loại object2propName>] } // Bây giờ kiểm tra thêm bằng cách sử dụng các tên thuộc tính đối tượng khác [propName để in object2] khác nếu như [Loại điều nàypropName> ! = Loại object2propName>] // Nếu thuộc tính được kế thừa, hãy bỏ chọn [nó phải bằng nhau nếu cả hai đối tượng đều kế thừa nó] nếu như[!điều này.aOwnProperty[propName]] tiếp tục; // Bây giờ xác minh chi tiết và đệ quy // Điều này trả về tập lệnh cho mảng so sánh / ** YÊU CẦU Array.equals ** / nếu như [điều nàypropName> ví dụ của Triển khai && object2propName> ví dụ của Triển khai] khác nếu như [điều nàypropName> ví dụ của Sự vật && object2propName> ví dụ của Sự vật] // So sánh giá trị bình thường cho chuỗi và số khác nếu như[điều nàypropName> ! = object2propName>] } // Nếu mọi thứ được thông qua, hãy nói CÓ Trở lại để đúng vậy; }

Tuy nhiên, hãy nhớ rằng điều này là để so sánh JSON dưới dạng dữ liệu, không phải phiên bản lớp và nội dung. Nếu bạn muốn so sánh các đối tượng phức tạp hơn, hãy xem câu trả lời này và đó là một hàm siêu dài. Để làm cho điều này hoạt động với Array.equals của bạn, bạn cần phải sửa đổi hàm gốc một chút:

// Kiểm tra xem chúng ta có các mảng lồng nhau không nếu như [điều nàytôi> ví dụ của Triển khai && triển khaitôi> ví dụ của Triển khai] / ** YÊU CẦU SO SÁNH ĐỐI TƯỢNG ** / khác nếu như [điều nàytôi> ví dụ của Sự vật && triển khaitôi> ví dụ của Sự vật] khác nếu như [điều nàytôi> ! = triển khaitôi>] ]

Rr, trong ECMAScript 6 / CoffeeScript / TypeScript với các chức năng mũi tên:

Bảng 1.chiều dài === ban 2.chiều dài && Bảng 1.tất cả[[giá trị, mục lục] => giá trị === ban 2mục lục>]

[Lưu ý: “vô hướng” ở đây có nghĩa là các giá trị có thể được so sánh trực tiếp bằng cách sử dụng ===. Vì vậy: số, chuỗi, đối tượng bằng tham chiếu, hàm bằng tham chiếu. Xem tham khảo MDN để biết thêm d thông tin về toán tử so sánh].

CẬP NHẬT

Từ những gì tôi đã đọc trong các nhận xét, việc sắp xếp và so sánh các mảng có thể cho kết quả chính xác:

Bảng 1.chiều dài === ban 2.chiều dài && Bảng 1.Tốt bụng[].tất cả[một chức năng[giá trị, mục lục] ];

Ví dụ:

Bảng 1 = 2,3,đầu tiên,4>; ban 2 = đầu tiên,2,3,4>;

Sau đó, đoạn mã trên sẽ cho đúng

Xem thêm bài viết thuộc chuyên mục: Thú Cảnh Khác

Chào cả nhà, mình là Duy, mình là một người sống tình cảm, yêu động vật và dành cực nhiều thời gian chăm sóc chó mèo. Hiện mình đồng thời là chủ của trang web duypets.com này. Với kinh nghiệm 25 năm yêu chó mèo và 3 năm chăm sóc các giống chó cảnh, mình tin những bài viết trên đây sẽ hữu ích cho các sen

Bạn đang xem: NEW Hướng Dẫn Sử Dụng Proshow Producer 5.0, Hướng Dẫn Sử Dụng Proshow Producer 5 0 [Cơ Bản] Tại AZ PetHướng …

Bạn đang xem: NEW Tools Là Gì – Thuật Ngữ: Tools Tại AZ PetTools Là Gì – Thuật Ngữ: Tools Các công cụ là …

Bạn đang xem: NEW Hàm Vlookup Là Gì ? Cách Sử Dụng Hàm Vlookup Trong Excel Hàm Vlookup Là Gì Tại AZ PetHàm Vlookup …

Bạn đang xem: NEW Chứng Minh 3 Đường Thẳng Đồng Quy Là Gì, Tính Chất Của Đồng Quy Là Gì? Tại AZ PetChứng Minh …

Thông tin liên hệ

Duy Pets là một shop phụ kiện cho thú cưng chuyên mua bán các dòng chó cảnh, như chó poodle, chó pugs, các loại chó ngoại khác. Di Động: 097 6666 156 Địa chỉ: Hẻm 84 Phạm Hùng, Bình Hưng, Bình Chánh, TPHCM

Video liên quan

Chủ Đề