Menu
CoddyTech

Phương thức Sort

Thuộc phần Logic và luồng chương trình trong hành trình JavaScript của Coddy. Bài học 57 trên 65.

Phương thức sort() cho phép bạn sắp xếp các phần tử của mảng ngay tại chỗ và trả về mảng đã sắp xếp. Theo mặc định, phương thức này sắp xếp các phần tử dưới dạng chuỗi theo thứ tự bảng chữ cái tăng dần.

Đây là cú pháp cơ bản:

array.sort([compareFunction])

Ví dụ không dùng hàm so sánh:

const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']

CẢNH BÁO: Số không được sắp xếp như mong đợi nếu thiếu hàm so sánh (compare function):

const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4] (sắp xếp số không đúng)

Để sắp xếp số đúng cách hoặc triển khai cách sắp xếp tùy chỉnh, bạn cần dùng một hàm so sánh (compare function).

Hàm so sánh (compare function) nên trả về:

  • Giá trị âm nếu a nên đứng trước b
  • Giá trị dương nếu b nên đứng trước a
  • Số 0 nếu chúng bằng nhau

Đây là cách bạn sắp xếp các số bằng hàm so sánh:

// Thứ tự tăng dần
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]
// Thứ tự giảm dần
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]

Một ví dụ khác về cách sắp xếp đối tượng:

const people = [
    { name: 'John', age: 30 },
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 35 }
];

// Sắp xếp theo tuổi (tăng dần)
people.sort((a, b) => a.age - b.age);
// Sắp xếp theo tên (dùng localeCompare() để xếp theo thứ tự bảng chữ cái)
people.sort((a, b) => a.name.localeCompare(b.name));
challenge icon

Thử thách

Dễ

Tạo một hàm (function) có tên sortByLength, nhận vào một mảng các chuỗi và trả về một mảng mới chứa các chuỗi đó, được sắp xếp theo độ dài tăng dần. Nếu hai chuỗi có cùng độ dài, hãy sắp xếp chúng theo thứ tự bảng chữ cái.

Tự làm thử

function sortByLength(arr) {
    return arr.sort((a, b) => {
        // Viết code ở đây
    })
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch JavaScript online