Hàm so sánh được truyền đến hàm
4 lấy các giá trị từ mảng.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Vì vậy, như bạn đã đề cập rằng bạn có một mảng mảng, các đối số của hàm so sánh sẽ là mảng.
Do đó, bạn có thể sử dụng
5 vàCode language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
6 để truy cập các đối tượng.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Đây là mã:
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[a, b] {
if [a[0].distance < b[0].distance] return -1;
if [a[0].distance > b[0].distance] return 1;
return 0;
}
console.log[nodes.slice[0].sort[sortNodes]];
Đây là ví dụ về cấu trúc tốt đẹp:
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
Xem ví dụ sau:: in this tutorial, you will learn how to use the JavaScript Array
4 method to sort arrays of numbers, string, and objects.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Làm thế nào nó hoạt động:
Đầu tiên, tuyên bố & nbsp; một mảng
4 bao gồm các tên sông nổi tiếng.Code language: JavaScript [javascript]
let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
Thứ hai, sắp xếp & nbsp; mảng
4 theo độ dài của phần tử & nbsp; sử dụng phương thứcCode language: JavaScript [javascript]
let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
4. Chúng tôi & nbsp; xuất các phần tử của mảngCode language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
4 vào bảng điều khiển web bất cứ khi nào phương thứcCode language: JavaScript [javascript]
let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
4 gọi hàm so sánh.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Như thể hiện trong đầu ra ở trên, mỗi phần tử đã được đánh giá nhiều lần, ví dụ, Amazon 4 lần, Congo 2 lần, v.v.
Nếu số lượng các phần tử mảng đang tăng lên, nó sẽ có khả năng làm giảm hiệu suất.
Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Bạn không thể giảm số lần chức năng so sánh được thực thi. Tuy nhiên, bạn có thể giảm công việc mà so sánh phải làm. Kỹ thuật này được gọi là biến đổi Schwartzian.
Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Để thực hiện & nbsp; điều này, bạn làm theo các bước sau:
Đầu tiên, trích xuất các giá trị thực tế vào một mảng tạm thời & nbsp; bằng phương thức map [].
Thứ hai, sắp xếp mảng tạm thời với & nbsp; các yếu tố đã được đánh giá [hoặc biến đổi].
Code language: CSS [css]
array.sort[comparefunction]
Thứ ba, đi bộ mảng tạm thời để có được một mảng với & nbsp; đúng thứ tự.
Trong hướng dẫn này, bạn đã học được cách sử dụng phương thức mảng JavaScript
4 để sắp xếp các mảng, số, ngày và đối tượng.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Hàm & nbsp; so sánh chức năng của phương thức
4 chấp nhận hai đối số và trả về một giá trị xác định thứ tự sắp xếp. Sau đây minh họa cú pháp của hàm so sánh:Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Code language: JavaScript [javascript]
function compare[a,b] { // ... }
Hàm
0 chấp nhận hai đối sốCode language: JavaScript [javascript]
function compare[a,b] { // ... }
1 và ________ 52. & NBSP; Phương thứcCode language: JavaScript [javascript]
function compare[a,b] { // ... }
4 sẽ sắp xếp các phần tử dựa trên giá trị trả về của hàm
[ 0, 1, 10, 2, 20, 3, 30 ]
Code language: JSON / JSON with Comments [json]
0 với các quy tắc sau:Code language: JavaScript [javascript]
function compare[a,b] { // ... }
- Nếu
5 nhỏ hơn 0, phương thức
Code language: JavaScript [javascript]function compare[a,b] { // ... }
4 sẽ sắp xếp
Code language: JSON / JSON with Comments [json][ 0, 1, 10, 2, 20, 3, 30 ]
1 đến chỉ số thấp hơn
Code language: JavaScript [javascript]function compare[a,b] { // ... }
2. Nói cách khác,
Code language: JavaScript [javascript]function compare[a,b] { // ... }
1 sẽ đến trước.
Code language: JavaScript [javascript]function compare[a,b] { // ... }
- Nếu
5 lớn hơn 0, phương thức
Code language: JavaScript [javascript]function compare[a,b] { // ... }
4 sắp xếp
Code language: JSON / JSON with Comments [json][ 0, 1, 10, 2, 20, 3, 30 ]
2 đến chỉ số thấp hơn
Code language: JavaScript [javascript]function compare[a,b] { // ... }
1, tức là, B sẽ đến trước.
Code language: JavaScript [javascript]function compare[a,b] { // ... }
- Nếu
5 trả về 0, phương thức
Code language: JavaScript [javascript]function compare[a,b] { // ... }
4 xem xét A bằng B và để lại các vị trí của họ & NBSP;
Code language: JSON / JSON with Comments [json][ 0, 1, 10, 2, 20, 3, 30 ]
Để khắc phục sự cố sắp xếp số, bạn có thể sử dụng cú pháp sau:
Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[ function[ a , b]{ if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
Output:
Code language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
Hoặc bạn có thể xác định chức năng so sánh bằng cách sử dụng cú pháp hàm mũi tên:
Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
Và sau đây là đơn giản nhất vì các phần tử của mảng là số:
Code language: JavaScript [javascript]
let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
Sắp xếp một mảng chuỗi
Giả sử bạn & nbsp; có một mảng chuỗi có tên
6 như sau:Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[ function[ a , b]{ if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
0Để sắp xếp các phần tử của mảng
6 & nbsp; theo thứ tự tăng dần theo thứ tự bảng chữ cái, bạn sử dụng phương thứcCode language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[ function[ a , b]{ if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
4 mà không chuyển hàm so sánh như trong ví dụ sau:Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
1Output:
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
2Để sắp xếp mảng
6 theo thứ tự giảm dần, bạn cần thay đổi logic của hàm so sánh và chuyển nó & nbsp; sang phương thứcCode language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[ function[ a , b]{ if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
4 như & nbsp; ví dụ sau.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
3Output:
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
4Giả sử bạn có một mảng chứa các phần tử ở cả chữ hoa và chữ thường như sau:
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
5Để sắp xếp mảng này theo thứ tự bảng chữ cái, bạn cần sử dụng hàm so sánh tùy chỉnh để chuyển đổi tất cả các phần tử thành cùng một trường hợp, ví dụ: chữ hoa để so sánh và chuyển hàm đó sang phương thức
4.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
6Output:
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
7Sắp xếp một mảng các chuỗi với các ký tự không phải ASCII
Phương pháp
4 đang hoạt động tốt với & nbsp; chuỗi với & nbsp; các ký tự ASCII. Tuy nhiên, đối với các chuỗi có ký tự không phải ASCII, ví dụ: & nbsp; é, è, v.v., phương pháp
[ 0, 1, 10, 2, 20, 3, 30 ]
Code language: JSON / JSON with Comments [json]
4 sẽ không hoạt động chính xác. Ví dụ:Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
8Như bạn thấy, chuỗi
4 sẽ đến & nbsp; trước chuỗiCode language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
5.Code language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
Để giải quyết điều này, bạn sử dụng phương pháp
6 của đối tượngCode language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
7 để so sánh các chuỗi trong một địa điểm cụ thể, như thế này:Code language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];
function sortNodes[[a], [b]] {
return a.distance - b.distance
}
console.log[nodes.slice[0].sort[sortNodes]];
9Output:
0Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Các yếu tố của mảng
8 hiện đang theo đúng thứ tự.Code language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
Sắp xếp một mảng các số
Giả sử bạn có một loạt các số có tên
9 như trong ví dụ sau.Code language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
1Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Để sắp xếp một mảng các số bằng số, bạn cần chuyển vào hàm so sánh tùy chỉnh so sánh hai số.
Ví dụ sau đây sắp xếp mảng
9 bằng số theo thứ tự tăng dần.Code language: JSON / JSON with Comments [json]
[ 0, 1, 2, 3, 10, 20, 30 ]
2Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Output:
3Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Để sắp xếp một mảng số bằng số theo thứ tự giảm dần, bạn chỉ cần đảo ngược logic trong Chức năng so sánh & nbsp;
4Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Output:
5Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Sắp xếp một mảng các đối tượng theo một thuộc tính được chỉ định
Sau đây là một mảng của các đối tượng
1, trong đó mỗi đối tượng chứa ba thuộc tính: ________ 82, ________ 83 vàCode language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
4.Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
6Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Sắp xếp các đối tượng theo một thuộc tính số
Ví dụ sau đây cho thấy cách sắp xếp nhân viên theo
3 theo thứ tự tăng dần.Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
7Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Output:
Ví dụ này tương tự như ví dụ về việc sắp xếp một mảng các số theo thứ tự tăng dần. Sự khác biệt là nó so sánh thuộc tính
3 của hai đối tượng thay thế.Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
Sắp xếp các đối tượng theo thuộc tính chuỗi
Để sắp xếp mảng
7 theo
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
Code language: JavaScript [javascript]
2 Case Case-Incalition, bạn vượt qua hàm so sánh & nbsp; so sánh hai chuỗi không nhạy cảm như sau:Code language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
8Sorting đối tượng theo thuộc tính ngàyCode language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
Sorting objects by the date property
Giả sử, bạn muốn sắp xếp nhân viên dựa trên mỗi ngày thuê nhân viên.
Dữ liệu ngày thuê được lưu trữ & nbsp; trong thuộc tính
4 của đối tượng nhân viên. Tuy nhiên, nó chỉ là một chuỗi đại diện cho một ngày hợp lệ, không phải đối tượngCode language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[[a,b] => { if[a > b] return 1; if[a < b] return -1; return 0; }]; console.log[numbers];
0. & NBSP;Code language: JavaScript [javascript]
let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
Do đó, để sắp xếp nhân viên theo ngày thuê, trước tiên bạn phải tạo một đối tượng
0 hợp lệ từ chuỗi ngày, sau đó so sánh hai ngày, giống như so sánh hai số.Code language: JavaScript [javascript]
let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
Đây là giải pháp:
9Optimizing mảng JavaScriptCode language: JavaScript [javascript]
let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort[]; console.log[numbers];
4 Phương phápCode language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Optimizing JavaScript Array [ 0, 1, 10, 2, 20, 3, 30 ]
Code language: JSON / JSON with Comments [json]
4 method
[ 0, 1, 10, 2, 20, 3, 30 ]
Trong & nbsp; thực tế, phương thức
4 gọi hàm so sánh nhiều lần cho mỗi phần tử trong mảng.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Xem ví dụ sau:
0Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Output:
1Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Làm thế nào nó hoạt động:
- Đầu tiên, tuyên bố & nbsp; một mảng
4 bao gồm các tên sông nổi tiếng.
Code language: JavaScript [javascript]let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
- Thứ hai, sắp xếp & nbsp; mảng
4 theo độ dài của phần tử & nbsp; sử dụng phương thức
Code language: JavaScript [javascript]let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
4. Chúng tôi & nbsp; xuất các phần tử của mảng
Code language: JSON / JSON with Comments [json][ 0, 1, 10, 2, 20, 3, 30 ]
4 vào bảng điều khiển web bất cứ khi nào phương thức
Code language: JavaScript [javascript]let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort[[a, b] => a - b]; console.log[numbers];
4 gọi hàm so sánh.
Code language: JSON / JSON with Comments [json][ 0, 1, 10, 2, 20, 3, 30 ]
Như thể hiện trong đầu ra ở trên, mỗi phần tử đã được đánh giá nhiều lần, ví dụ, Amazon 4 lần, Congo 2 lần, v.v.
Nếu số lượng các phần tử mảng đang tăng lên, nó sẽ có khả năng làm giảm hiệu suất.
Bạn không thể giảm số lần chức năng so sánh được thực thi. Tuy nhiên, bạn có thể giảm công việc mà so sánh phải làm. Kỹ thuật này được gọi là biến đổi Schwartzian.
Để thực hiện & nbsp; điều này, bạn làm theo các bước sau:
- Đầu tiên, trích xuất các giá trị thực tế vào một mảng tạm thời & nbsp; bằng phương thức map [].
- Thứ hai, sắp xếp mảng tạm thời với & nbsp; các yếu tố đã được đánh giá [hoặc biến đổi].
- Thứ ba, đi bộ mảng tạm thời để có được một mảng với & nbsp; đúng thứ tự.
Đây là giải pháp:
2Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Output:
3Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Trong hướng dẫn này, bạn đã học được cách sử dụng phương thức mảng JavaScript
4 để sắp xếp các mảng, số, ngày và đối tượng.Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
Hướng dẫn này có hữu ích không?