Hướng dẫn cách so sánh mảng trong JavaScript. Bạn sẽ học được 3 cách so sánh 2 mảng trong JavaScript sau bài học này.
Có 3 phương pháp so sánh mảng trong JavaScript như sau:
- Vòng lặp for: So sánh 2 mảng bằng cách đối chiếu từng cặp phần tử
- JSON.stringify: So sánh 2 mảng bằng cách chuyển về kiểu JSON
- Array toString: So sánh 2 mảng bằng cách chuyển về kiểu String
Có thể so sánh mảng trong JavaScript bằng toán tử so sánh không?
Khác với khi so sánh 2 số, bạn không thể sử dụng các toán tử so sánh như ==
hay ===
với mảng trong JavaScript được. Nếu chúng ta sử dụng các toán tử so sánh để so sánh mảng, thì kết quả trả về sẽ không được như mong đợi như sau:
let array1 = [0, 1, 2, 3, 4]; |
Kết quả:
true |
Có thể thấy trong phép so sánh thứ 3 đã không đưa ra được kết quả chính xác.
Để so sánh mảng trong JavaScript, chúng ta không thể so sánh trực tiếp chúng như trên, mà cần phải so sánh từng cặp phần tử của chúng tại cùng vị trí index với nhau, hoặc là chuyển các mảng này sang dạng dữ liệu có thể so sánh, với một trong 3 phương pháp mà Kiyoshi sẽ trình bày ở dưới đây.
So sánh mảng trong JavaScript bằng cách đối chiếu từng cặp phần tử
Cách đầu tiên và đơn giản, dễ hiểu nhất để so sánh mảng trong JavaScript, đó chính là đối chiếu và kiểm tra từng cặp phần tử trong 2 mảng với nhau.
Nếu tất cả các cặp phần tử với vị trí tương ứng trong 2 mảng đều giống nhau thì hai mảng đó là bằng nhau. Ngược lại chỉ cần tồn tại một cặp phần tử có giá trị khác nhau, điều đó có nghĩa là 2 mảng đã cho không giống nhau.
Chúng ta sẽ sử dụng tới vòng lặp for với từng cặp phần tử và viết hàm trong chương trình so sánh mảng trong JavaScript như sau:
/*Hàm so sánh 2 mảng trong JavaScript*/ |
Kết quả phép so sánh mảng trong JavaScript:
true |
So sánh 2 mảng bằng cách chuyển về kiểu JSON
Do trong Array Object không tồn tại phương thức nào giúp trực tiếp so sánh 2 mảng cả, nên thay vì so sánh trực tiếp 2 mảng với nhau thì chúng ta sẽ chuyển chúng về một kiểu dữ liệu khác dễ so sánh hơn.
Và lựa chọn tốt nhất trong số đó chính là kiểu JSON. Kiểu JSON giúp việc chuyển đổi giữa mảng sang JSON không bị lỗi trong mọi trường hợp, nên rất an toàn và giúp việc so sánh 2 mảng rất chính xác.
Sau khi chuyển mảng về JSON, bằng cách sử dụng phương thức JSON.stringify(), chúng ta có thể tiến hành so sánh gián tiếp 2 mảng thông qua 2 JSON của chúng như sau:
let array1 = [0, 1, 2, 3, 4]; |
Kết quả phép so sánh mảng trong JavaScript bằng JSON.stringify():
true |
Lợi ích lớn nhất của việc so sánh mảng trong JavaScript bằng JSON.stringify chính là do việc chuyển đổi từ mảng sang JSON được JavaScript thực hiện rát nghiêm ngặt, nên kể cả với các trường hợp mà giá trị của mảng là null
hay undefined
chăng nữa thì lỗi cũng không bị xảy ra.
So sánh 2 mảng bằng cách chuyển về kiểu String
Phương pháp cơ bản cuối cùng để so sánh 2 mảng trong JavaScript chính là chuyển mảng về kiểu String rồi mới đem so sánh.
Để chuyển mảng về kiểu String, chúng ta sử dụng tới phương thức toString mà Kiyoshi đã hướng dấn trong bài Chuyển mảng thành chuỗi trong javascript. Và chúng ta tiến hành so sánh 2 mảng như sau:
let array1 = [0, 1, 2, 3, 4]; |
Kết quả phép so sánh mảng trong JavaScript bằng toString():
true |
Tuy nhiên cần lưu ý là phương pháp này không an toàn bằng phương pháp sử dụng JSON.stringify(), bởi vì lỗi sẽ bị trả về nếu mảng đem so sánh có giá trị bằng null hoặc undefined như sau:
let a = [1, 2], b = null; |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn cách so sánh mảng trong JavaScript rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.
HOME › học javascript - lập trình javascript cơ bản>>04. mảng trong javascript