Hàm sort() trong JavaScript
Trần Thị Vân
- 1102
- 22/08/2025
Chức năng của Hàm sort() trong JavaScript
Hàm sort() trong JavaScript dùng để sắp xếp các phần tử có định dạng chữ hoặc số trong mảng theo tăng dần hoặc giảm dần, sau khi sắp xếp thì mảng gốc sẽ cập nhật lại vị trí của các phần tử.
Cú pháp của Hàm sort() trong JavaScript
Mảng bình thường
Sắp xếp số tăng dần:
mang.sort(function(a, b) {
return a - b; // Sắp xếp cột giá trị của phần tử Từ a đến b tăng dần
});
Sắp xếp cột giá trị của phần tử Từ a đến b tăng dần
mang: Mảng
Sắp xếp số giảm dần:
mang.sort(function(a, b) {
return b - a; // Sắp xếp cột giá trị của phần tử từ b đến a giảm dần
});
Sắp xếp cột giá trị của phần tử từ b đến a giảm dần
mang: Mảng
Sắp xếp chữ tăng dần:
mang.sort((a, b) => a.localeCompare(b)); // Sắp xếp cột giá trị của phần tử Từ a đến b tăng dần
Sắp xếp cột giá trị của phần tử Từ a đến b tăng dần
mang: Mảng
Sắp xếp chữ giảm dần:
mang.sort((a, b) => b.localeCompare(a)); // Sắp xếp cột giá trị của phần tử từ b đến a giảm dần
Sắp xếp cột giá trị của phần tử từ b đến a giảm dần
mang: Mảng
Sắp xếp trong Mảng đối tượng
Sắp xếp số tăng dần:
mang.sort(function(a, b) {
return a.tencotso - b.tencotso; // Sắp xếp cột tencotso Từ a đến b tăng dần
});
Sắp xếp cột tencotso Từ a đến b tăng dần.
tencotso: tên cột chứa giá trị số.
mang: Mảng.
Sắp xếp số giảm dần:
mang.sort(function(a, b) {
return b.tencotso - a.tencotso; // Sắp xếp cột tencotso Từ b đến a giảm dần
});
Sắp xếp cột tencotso Từ b đến a giảm dần.
tencotso: tên cột chứa giá trị số.
mang: Mảng.
Sắp xếp chữ tăng dần:
mang.sort((a, b) => a.tencotchu.localeCompare(b.tencotchu)); // Sắp xếp cột tencotchu Từ a đến b tăng dần
Sắp xếp cột tencotchu Từ a đến b tăng dần
tencotchu: Cột chứa giá trị chữ.
mang: Mảng.
Sắp xếp chữ giảm dần:
mang.sort((a, b) => b.tencotchu.localeCompare(a.tencotchu)); // Sắp xếp cột tencotchu Từ b đến a giảm dần
Sắp xếp cột tencotchu Từ b đến a giảm dần
tencotchu: Cột chứa giá trị chữ.
mang: Mảng.
Code Hàm sort() trong JavaScript
Hàm sort() tăng dần trong JavaScript
<script>
// Sắp xếp số trong mảng tăng dần
document.write("<b>Sắp xếp số trong mảng tăng dần</b><br>");
var mang = new Array(34,44,20,8,10);
mang.sort(function(a, b) {
return a - b; // Sắp xếp cột giá trị của phần tử Từ a đến b tăng dần
});
mang.forEach((value, key) => {
document.write("Vị trí "+key+": "+value+"<br>");
});
// Sắp xếp ký tự trong mảng tăng dần
document.write("<b>Sắp xếp ký tự trong mảng tăng dần</b><br>");
var mangchu = new Array("Lực","Dung","Vân","Quỳnh","Hạ");
mangchu.sort((a, b) => a.localeCompare(b)); // Sắp xếp cột giá trị của phần tử Từ a đến b tăng dần
mangchu.forEach((value, key) => {
document.write("Vị trí "+key+": "+value+"<br>");
});
// Sắp xếp ký tự trong mảng tăng dần
document.write("<b>Sắp xếp ký tự trong mảng tăng dần</b><br>");
var mangchu = new Array("Lực","Dung","Vân","Quỳnh","Hạ");
mangchu.sort(); // Mặc định Cột giá trị sắp xếp chữ cái tăng dần
mangchu.forEach((value, key) => {
document.write("Vị trí "+key+": "+value+"<br>");
});
</script>
Kết quả:
Sắp xếp số trong mảng tăng dần
Vị trí 0: 8
Vị trí 1: 10
Vị trí 2: 20
Vị trí 3: 34
Vị trí 4: 44
Sắp xếp ký tự trong mảng tăng dần
Vị trí 0: Dung
Vị trí 1: Hạ
Vị trí 2: Lực
Vị trí 3: Quỳnh
Vị trí 4: Vân
Hàm sort() giảm dần trong JavaScript
<script>
// Sắp xếp số trong mảng giảm dần
document.write("<b>Sắp xếp số trong mảng giảm dần</b><br>");
var mang = new Array(34,44,20,8,10);
mang.sort(function(a, b) {
return b - a; // Sắp xếp cột giá trị của phần tử từ b đến a giảm dần
});
mang.forEach((value, key) => {
document.write("Vị trí "+key+": "+value+"<br>");
});
// Sắp xếp ký tự trong mảng giảm dần
document.write("<b>Sắp xếp ký tự trong mảng giảm dần</b><br>");
var mangchu = new Array("Lực","Dung","Vân","Quỳnh","Hạ");
mangchu.sort((a, b) => b.localeCompare(a)); // Sắp xếp cột giá trị của phần tử từ b đến a giảm dần
mangchu.forEach((value, key) => {
document.write("Vị trí "+key+": "+value+"<br>");
});
</script>
Kết quả:
Sắp xếp số trong mảng giảm dần
Vị trí 0: 44
Vị trí 1: 34
Vị trí 2: 20
Vị trí 3: 10
Vị trí 4: 8
Sắp xếp ký tự trong mảng giảm dần
Vị trí 0: Vân
Vị trí 1: Quỳnh
Vị trí 2: Lực
Vị trí 3: Hạ
Vị trí 4: Dung
Hàm sort() Mảng đối tượng trong JavaScript
<script>
// Sắp xếp cột tuổi tăng dần trong mảng đối tượng
document.write("<b>Sắp xếp cột tuổi tăng dần trong mảng đối tượng</b><br>");
var mang = [ { ten: "Dung", tuoi: 29 }, { ten: "Vân", tuoi: 28 }, { ten: "Lực", tuoi: 35 } ];
mang.sort(function(a, b) {
return a.tuoi - b.tuoi; // Sắp xếp cột'tuoi', từ a đến b, tăng dần
});
mang.forEach(function(mangcon, index) {
document.write("Vị trí "+index+": "+mangcon.ten+" "+mangcon.tuoi+" tuổi<br>");
});
// Sắp xếp cột tuổi giảm dần trong mảng đối tượng
document.write("<b>Sắp xếp cột tuổi giảm dần trong mảng đối tượng</b><br>");
var mang = [ { ten: "Dung", tuoi: 29 }, { ten: "Vân", tuoi: 28 }, { ten: "Lực", tuoi: 35 } ];
mang.sort(function(a, b) {
return b.tuoi - a.tuoi; // Sắp xếp cột'tuoi', từ b đến a, giảm dần
});
mang.forEach(function(mangcon, index) {
document.write("Vị trí "+index+": "+mangcon.ten+" "+mangcon.tuoi+" tuổi<br>");
});
// Sắp xếp cột tên tăng dần trong mảng đối tượng
document.write("<b>Sắp xếp cột tên tăng dần trong mảng đối tượng</b><br>");
var mang = [ { ten: "Dung", tuoi: 29 }, { ten: "Vân", tuoi: 28 }, { ten: "Lực", tuoi: 35 } ];
mang.sort((a, b) => a.ten.localeCompare(b.ten)); // Sắp xếp cột'ten', từ a đến b, tăng dần
mang.forEach(function(mangcon, index) {
document.write("Vị trí "+index+": "+mangcon.ten+" "+mangcon.tuoi+" tuổi<br>");
});
// Sắp xếp cột tên giảm dần trong mảng đối tượng
document.write("<b>Sắp xếp cột tên giảm dần trong mảng đối tượng</b><br>");
var mang = [ { ten: "Dung", tuoi: 29 }, { ten: "Vân", tuoi: 28 }, { ten: "Lực", tuoi: 35 } ];
mang.sort((a, b) => b.ten.localeCompare(a.ten)); // Sắp xếp cột'ten', từ b đến a, giảm dần
mang.forEach(function(mangcon, index) {
document.write("Vị trí "+index+": "+mangcon.ten+" "+mangcon.tuoi+" tuổi<br>");
});
</script>
Kết quả:
Sắp xếp cột tuổi tăng dần trong mảng đối tượng
Vị trí 0: Vân 28 tuổi
Vị trí 1: Dung 29 tuổi
Vị trí 2: Lực 35 tuổi
Sắp xếp cột tuổi giảm dần trong mảng đối tượng
Vị trí 0: Lực 35 tuổi
Vị trí 1: Dung 29 tuổi
Vị trí 2: Vân 28 tuổi
Sắp xếp cột tên tăng dần trong mảng đối tượng
Vị trí 0: Dung 29 tuổi
Vị trí 1: Lực 35 tuổi
Vị trí 2: Vân 28 tuổi
Sắp xếp cột tên giảm dần trong mảng đối tượng
Vị trí 0: Vân 28 tuổi
Vị trí 1: Lực 35 tuổi
Vị trí 2: Dung 29 tuổi
Những lỗi thường gặp khi dùng hàm sort() trong JavaScript
Hàm sort() khá dễ sử dụng nhưng có một số đặc điểm khiến kết quả sắp xếp khác với suy nghĩ ban đầu. Hiểu rõ các lỗi này giúp tránh tình trạng mảng cho ra thứ tự không chính xác hoặc dữ liệu ban đầu bị thay đổi ngoài ý muốn.
Vì sao sort() sắp xếp số không đúng như mong đợi?
Nếu gọi sort() mà không truyền hàm so sánh, JavaScript sẽ xử lý các phần tử theo cách sắp xếp mặc định dựa trên chuỗi. Vì vậy, với mảng số, kết quả có thể không theo thứ tự tăng dần về mặt giá trị.
const numbers = [10, 2, 30, 4];
numbers.sort();
console.log(numbers);
Trong trường hợp cần sắp xếp số, nên cung cấp hàm so sánh để xác định phần tử nào đứng trước:
const numbers = [10, 2, 30, 4];
numbers.sort((a, b) => a - b);
console.log(numbers);
Cách này phù hợp khi cần sắp xếp tăng dần. Nếu muốn giảm dần, chỉ cần đảo vị trí a và b trong phép tính so sánh.
sort() có làm thay đổi mảng ban đầu không?
Có. sort() sắp xếp trực tiếp trên chính mảng được gọi, thay vì tạo ra một mảng mới. Điều này dễ gây lỗi khi mảng ban đầu vẫn được sử dụng ở một phần khác của chương trình.
const numbers = [3, 1, 2];
const sortedNumbers = numbers.sort((a, b) => a - b);
console.log(numbers);
console.log(sortedNumbers);
Trong ví dụ trên, numbers cũng đã bị thay đổi sau khi gọi sort(). Nếu muốn giữ nguyên dữ liệu gốc, có thể tạo bản sao trước khi sắp xếp.
const numbers = [3, 1, 2];
const sortedNumbers = [...numbers].sort((a, b) => a - b);
console.log(numbers);
console.log(sortedNumbers);
Cách này đặc biệt hữu ích khi cùng một dữ liệu cần được hiển thị theo nhiều thứ tự khác nhau.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm sort() trong JavaScript.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *