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));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
})
}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
4JSON phần 2
Duyệt qua JSONJSON lồng nhauOptional chaining trong JSONSao chép nông và sâuÔn tập: Cửa hàng xe đạpÔn tập: Hệ Mặt Trời7Hệ thống quản lý thư viện
Tổng quan dự ánThêm sách10Quản lý hệ thống lễ hội
Tổng quan dự ánThêm phim và địa điểm2Mảng nhiều chiều
Kiến thức cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuÔn tập về mảng 2 chiềuPhép cộng và phép trừ ma trậnMảng không đềuMảng 3 chiều và hơn nữaCác mẫu thường gặp với mảng 2 chiềuÔn tập về mảng3JSON phần 1
JSON là gì?Kiểm tra khóa có tồn tạiPhương thức của đối tượngToán tử spread phần 1Toán tử spread phần 2Xóa khóaÔn tập: thao tác với khóa trong JSONTự luyện tập: Trình biên dịch JavaScript online