Trong JavaScript, chúng ta có thể sắp xếp các phần tử của một mảng một cách dễ dàng bằng một phương thức có sẵn gọi là hàm sort().
Tuy nhiên, các kiểu dữ liệu (chuỗi, số, v.v.) có thể khác nhau từ mảng này sang mảng khác. Điều này có nghĩa là chỉ sử dụng phương thức sort() không phải lúc nào cũng là một giải pháp thích hợp.
Trong bài đăng này, bạn sẽ tìm hiểu cách sắp xếp một mảng trong JavaScript bằng cách sử dụng phương thức sort() cho chuỗi và số.
Mảng chuỗi
Hãy bắt đầu với các chuỗi:
const teams = ['Real Madrid', 'Manchester Utd', 'Bayern Munich', 'Juventus'];
Khi chúng ta sử dụng phương thức sort() thì mặc định các phần tử sẽ được sắp xếp theo thứ tự tăng dần (A đến Z):
teams.sort();
// ['Bayern Munich', 'Juventus', 'Manchester Utd', 'Real Madrid']
Nếu bạn muốn sắp xếp mảng theo thứ tự giảm dần, bạn cần sử dụng phương thức đảo ngược ( ) để thay thế:
teams.reverse();
// ['Real Madrid', 'Manchester Utd', 'Juventus', 'Bayern Munich']
Mảng số
Thật không may, việc sắp xếp các số không đơn giản như vậy. Nếu chúng ta áp dụng phương pháp sắp xếp trực tiếp cho một mảng số, chúng ta sẽ thấy một kết quả không mong muốn:
const numbers = [3, 23, 12];
numbers.sort(); // --> 12, 23, 3
Tại sao phương thức sort() không hoạt động đối với các số
Trên thực tế, nó đang hoạt động, nhưng sự cố này xảy ra do JavaScript sắp xếp các số theo thứ tự bảng chữ cái. Hãy để tôi giải thích điều này một cách chi tiết.
Hãy nghĩ về A=1, B=2, và C=3.
const myArray = ['C', 'BC', 'AB'];
myArray.sort(); // [AB, BC, C]
Ví dụ: nếu chúng ta có ba chuỗi là C (3), BC (23) và AB (12), JavaScript sẽ sắp xếp chúng thành AB, BC và C theo thứ tự tăng dần, đúng theo thứ tự bảng chữ cái.
Tuy nhiên, JavaScript sẽ sắp xếp các số (một lần nữa theo bảng chữ cái) là 12, 23 và 3, điều này là không chính xác.
Giải pháp: Hàm so sánh
May mắn thay, chúng ta có thể hỗ trợ phương thức sort() với một hàm so sánh cơ bản sẽ thực hiện thủ thuật:
function(a, b) {return a - b}
May mắn thay, phương pháp sắp xếp có thể sắp xếp các giá trị âm, 0 và dương theo đúng thứ tự. Khi phương thức sort() so sánh hai giá trị, nó sẽ gửi các giá trị đó đến hàm so sánh của chúng ta và sắp xếp các giá trị theo giá trị được trả về.
- Nếu kết quả là âm, a được sắp xếp trước b.
- Nếu kết quả là dương, b được sắp xếp trước a.
- Nếu kết quả là 0, không có gì thay đổi.
Tất cả những gì chúng ta cần là sử dụng hàm so sánh bên trong phương thức sort():
const numbers = [3, 23, 12];
numbers.sort(function(a, b){return a - b}); // --> 3, 12, 23
Nếu chúng ta muốn sắp xếp các số theo thứ tự giảm dần, lần này chúng ta cần trừ tham số thứ hai (b) khỏi tham số đầu tiên (a):
const numbers = [3, 23, 12];
numbers.sort(function(a, b){return b - a}); // --> 23, 12, 3
Gói (lại
Như chúng ta có thể thấy, việc sắp xếp các phần tử của một mảng có thể được thực hiện dễ dàng trong JavaScript bằng phương thức sort(), nếu chúng ta biết cách sử dụng nó đúng cách. Tôi hy vọng bài đăng của tôi giúp bạn hiểu cách sử dụng phương thức sort() trong JavaScript đúng cách.
Nếu bạn muốn tìm hiểu thêm về Phát triển Web, vui lòng truy cập kênh Youtube của tôi.
Cảm ơn bạn đã đọc!