Cần viết hàm JavaScript nhận mảng số. Hàm sắp xếp theo tiêu chí:
- ---Nếu mảng chứa số 0, tất cả số 0 phải xuất hiện ở đầu.
- ---Các số còn lại đặt theo thứ tự giảm dần.
Ví dụ - Nếu mảng đầu vào là:
const arr = [4, 7, 0 ,3, 5, 1, 0];
Sau khi sắp xếp, mảng sẽ thành:
const output = [0, 0, 7, 5, 4, 3, 1];
Sử dụng Array.prototype.sort(). Với sắp xếp giảm dần, lấy hiệu của đối số thứ hai trừ thứ nhất. Nếu giá trị falsy (số 0) thì dùng Number.MAX_VALUE thay thế.
Ví dụ
const arr = [4, 7, 0 ,3, 5, 1, 0];
const specialSort = (arr = []) => {
const sorter = (a, b) => {
return (b || Number.MAX_VALUE) - (a || Number.MAX_VALUE);
};
arr.sort(sorter);
};
specialSort(arr);
console.log(arr);
Kết quả
Điều này sẽ tạo ra đầu ra sau:
[
0, 0, 7, 5,
4, 3, 1
]