Tuy nhiên, nếu các số được sắp xếp dưới dạng chuỗi, thì "25" lớn hơn "100", vì "2" lớn hơn "1"
Do đó, phương pháp sort[]
sẽ tạo ra kết quả không chính xác khi sắp xếp các số
Bạn có thể khắc phục điều này bằng cách cung cấp chức năng so sánh
Thí dụ
const điểm = [40, 100, 1, 5, 25, 10];
điểm. sắp xếp[hàm[a, b]{return a - b}];
Sử dụng thủ thuật tương tự để sắp xếp một mảng giảm dần
Thí dụ
const điểm = [40, 100, 1, 5, 25, 10];
điểm. sắp xếp[hàm[a, b]{return b - a}];
Chức năng so sánh
Mục đích của hàm so sánh là xác định thứ tự sắp xếp thay thế
Hàm so sánh sẽ trả về giá trị âm, 0 hoặc dương, tùy thuộc vào các đối số
hàm[a, b]{return a - b}
Khi hàm sort[]
so sánh hai giá trị, nó sẽ gửi các giá trị đến hàm so sánh và sắp xếp các giá trị theo giá trị được trả về [âm, 0, dương]
Nếu kết quả là âm, thì a
được sắp xếp trước b
Nếu kết quả là dương, thì b
được sắp xếp trước a
Nếu kết quả là 0, không có thay đổi nào được thực hiện với thứ tự sắp xếp của hai giá trị
Thí dụ
Hàm so sánh so sánh tất cả các giá trị trong mảng, hai giá trị cùng một lúc sort[]
0
Khi so sánh 40 và 100, phương thức sort[]
gọi hàm so sánh[40, 100]
Hàm tính toán 40 - 100 sort[]
2 và vì kết quả là âm [-60], hàm sắp xếp sẽ sắp xếp 40 thành giá trị nhỏ hơn 100
Bạn có thể sử dụng đoạn mã này để thử nghiệm sắp xếp theo thứ tự số và bảng chữ cái
Sắp xếp theo thứ tự bảng chữ cái
Sắp xếp theo số
Sắp xếp một mảng theo thứ tự ngẫu nhiên
Thí dụ
const điểm = [40, 100, 1, 5, 25, 10];
điểm. sắp xếp [hàm [] {trả về 0. 5 - Toán. ngẫu nhiên[]}];
Tự mình thử »
Phương pháp Fisher Yates
Ví dụ trên, mảng. sắp xếp [], không chính xác. Nó sẽ ưu tiên một số con số hơn những con số khác
Phương pháp chính xác phổ biến nhất, được gọi là Fisher Yates shuffle, và được giới thiệu trong khoa học dữ liệu vào đầu năm 1938
Trong JavaScript, phương thức này có thể được dịch sang cái này
Thí dụ
const điểm = [40, 100, 1, 5, 25, 10];
cho [hãy i = điểm. chiều dài -1;
hãy để j = Toán học. tầng [Toán. ngẫu nhiên[] * [i+1]];
đặt k = điểm[i];
điểm[i] = điểm[j];
điểm[j] = k;
}
Tự mình thử »
Tìm giá trị mảng cao nhất [hoặc thấp nhất]
Không có chức năng tích hợp để tìm giá trị tối đa hoặc tối thiểu trong một mảng
Tuy nhiên, sau khi bạn đã sắp xếp một mảng, bạn có thể sử dụng chỉ mục để lấy giá trị cao nhất và thấp nhất
Sắp xếp tăng dần
Thí dụ
const điểm = [40, 100, 1, 5, 25, 10];
điểm. sắp xếp[hàm[a, b]{return a - b}];
// bây giờ điểm[0] chứa giá trị thấp nhất
// và điểm[điểm. length-1] chứa giá trị cao nhất
Sắp xếp giảm dần
Thí dụ
const điểm = [40, 100, 1, 5, 25, 10];
điểm. sắp xếp[hàm[a, b]{return b - a}];
// bây giờ điểm[0] chứa giá trị cao nhất
// và điểm[điểm. length-1] chứa giá trị thấp nhất
Sắp xếp toàn bộ mảng là một phương pháp rất kém hiệu quả nếu bạn chỉ muốn tìm giá trị cao nhất [hoặc thấp nhất]
Sử dụng toán học. max[] trên Mảng
Bạn có thể sử dụng sort[]
3 để tìm số cao nhất trong một mảng
sort[]
4 tương đương với sort[]
5
Sử dụng toán học. min[] trên Mảng
Bạn có thể sử dụng sort[]
6 để tìm số thấp nhất trong một mảng
sort[]
7 tương đương với sort[]
8
Các phương thức JavaScript tối thiểu/tối đa của tôi
Giải pháp nhanh nhất là sử dụng phương pháp "nhà làm"
Hàm này lặp qua một mảng so sánh từng giá trị với giá trị cao nhất được tìm thấy
Ví dụ [Tìm Max]
hàm myArrayMax[mảng] {
hãy để len = mảng. chiều dài;
đặt max = -Infinity;
trong khi [len--] {
nếu [mảng [len] > tối đa] {
tối đa = mảng [len];
}
}
trả lại tối đa;
}
Tự mình thử »
Hàm này lặp qua một mảng so sánh từng giá trị với giá trị thấp nhất được tìm thấy
Ví dụ [Tìm Min]
hàm myArrayMin[mảng] {
hãy để len = mảng. chiều dài;
để min = Infinity;
trong khi [len--] {
nếu [mảng [len] < phút] {
tối thiểu = mảng [len];
}
}
trở lại tối thiểu;
}
Tự mình thử »
Sắp xếp mảng đối tượng
Mảng JavaScript thường chứa các đối tượng
Thí dụ
const ô tô = [
{loại. "Volvo", năm. 2016},
{loại. "Saab", năm. 2001},
{loại. "BMW", năm. 2010}
];
Ngay cả khi các đối tượng có các thuộc tính của các kiểu dữ liệu khác nhau, phương thức sort[]
có thể được sử dụng để sắp xếp mảng