Sắp xếp mảng theo thứ tự tăng dần javascript không có chức năng

Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách sử dụng phương thức Array

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 của JavaScript để sắp xếp các mảng số, chuỗi và đối tượng

Giới thiệu về phương thức Mảng JavaScript function compare(a,b) { // ... }Code language: JavaScript (javascript)2

Phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 cho phép bạn sắp xếp các phần tử của mảng tại chỗ. Ngoài việc trả về mảng đã sắp xếp, phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 còn thay đổi vị trí của các phần tử trong mảng ban đầu

Theo mặc định, phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 sắp xếp các phần tử mảng theo thứ tự tăng dần với giá trị nhỏ nhất trước và giá trị lớn nhất sau cùng

Phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 chuyển các phần tử thành chuỗi và so sánh các chuỗi để xác định thứ tự

Xem xét ví dụ sau

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)

đầu ra là

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)

Trong ví dụ này, phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 đặt 10 trước 2 vì chuỗi “10” đứng trước “2” khi thực hiện so sánh chuỗi

Để khắc phục điều này, bạn cần truyền một hàm so sánh cho phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2. Phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
00) sẽ sử dụng hàm so sánh để xác định thứ tự của các phần tử

Phần sau đây minh họa cú pháp của phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2

Phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 chấp nhận một đối số tùy chọn là hàm so sánh hai phần tử của mảng

Nếu bạn bỏ qua hàm so sánh, thì phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 sẽ sắp xếp các phần tử theo thứ tự sắp xếp dựa trên giá trị điểm mã Unicode của các phần tử như đã đề cập trước đó

Hàm so sánh của phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 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

function compare(a,b) { // ... }

Code language: JavaScript (javascript)

Hàm

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
05 chấp nhận hai đối số

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
06 và

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
07. Phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 sẽ sắp xếp các phần tử dựa trên giá trị trả về của hàm

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
05 với các quy tắc sau

  1. Nếu

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    20 nhỏ hơn 0, phương thức

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    2 sắp xếp

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    06 thành chỉ số thấp hơn

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    07. Nói cách khác,

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    06 sẽ đến trước
  2. Nếu

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    20 lớn hơn 0, phương thức

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    2 sắp xếp

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    07 thành chỉ số thấp hơn

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    06, i. e. , b sẽ đến trước
  3. Nếu

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    20 trả về 0, phương thức

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    2 coi a bằng b và giữ nguyên vị trí của chúng

Để khắc phục sự cố sắp xếp số, bạn có thể sử dụng cú pháp sau

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
0

đầu ra

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2

Hoặc bạn có thể xác định hàm so sánh bằng cú pháp hàm mũi tên

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
5

Và cách sau là đơn giản nhất vì các phần tử của mảng đều là số

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
6

Sắp xếp một mảng các chuỗi

Giả sử bạn có một mảng chuỗi có tên là

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
51 như sau

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
8

Để sắp xếp các phần tử của mảng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
51 theo thứ tự bảng chữ cái tăng dần, bạn sử dụng phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 mà không chuyển hàm so sánh như trong ví dụ sau

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
1

đầu ra

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
0

Để sắp xếp mảng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
51 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ó sang phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 như ví dụ sau

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
1

đầu ra

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
2

Giả sử bạn có một mảng chứa các phần tử cả chữ hoa và chữ thường như sau

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
3

Để 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 e. g. , viết hoa để so sánh và truyền hàm đó cho phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4

đầu ra

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
5

Sắp xếp một chuỗi các ký tự không phải ASCII

Phương pháp

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 đang hoạt động tốt với các chuỗi có ký tự ASCII. Tuy nhiên, đối với các chuỗi có ký tự không phải ASCII e. g. , é, è, v.v. , phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 sẽ không hoạt động chính xác. Ví dụ

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
6

Như bạn thấy, chuỗi

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
59 phải xuất hiện trước chuỗi

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
60

Để giải quyết vấn đề này, bạn sử dụng phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
61 của đối tượng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
62 để so sánh các chuỗi ở một ngôn ngữ cụ thể, như thế này

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
7

đầu ra

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
8

Các phần tử của mảng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
63 bây giờ theo đúng thứ tự

Sắp xếp một dãy số

Giả sử bạn có một dãy số có tên là

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
64 như trong ví dụ sau

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
9

Để sắp xếp một mảng các số theo dạng số, bạn cần chuyển vào một hàm so sánh tùy chỉnh để so sánh hai số

Ví dụ sau sắp xếp mảng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
64 theo số thứ tự tăng dần

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
20

đầu ra

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
21

Để sắp xếp một dãy số theo thứ tự giảm dần, bạn chỉ cần đảo ngược logic trong hàm so sánh như minh họa trong ví dụ sau

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
22

đầu ra

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
23

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 gồm các đối tượng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
66, trong đó mỗi đối tượng chứa ba thuộc tính.

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
67,

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
68 và

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
69

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
24

Sắp xếp các đối tượng theo thuộc tính số

Ví dụ sau đây cho thấy cách sắp xếp các nhân viên theo

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
68 theo thứ tự tăng dần

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
25

đầu ra

Sắp xếp mảng theo thứ tự tăng dần javascript không có chức năng
Sắp xếp mảng theo thứ tự tăng dần javascript không có chức năng

Ví dụ này tương tự như ví dụ về sắp xếp một dãy số theo thứ tự tăng dần. Sự khác biệt là nó so sánh thuộc tính

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
68 của hai đối tượng thay vì

Sắp xếp các đối tượng theo thuộc tính chuỗi

Để sắp xếp mảng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
82 theo thuộc tính

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
67 không phân biệt chữ hoa chữ thường, bạn chuyển hàm so sánh so sánh hai chuỗi không phân biệt chữ hoa chữ thường như sau

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
26
Sắp xếp mảng theo thứ tự tăng dần javascript không có chức năng
Sắp xếp mảng theo thứ tự tăng dần javascript không có chức năng

Sắp xếp đối tượng theo thuộc tính ngày tháng

Giả sử, bạn muốn sắp xếp nhân viên dựa trên ngày thuê của từng nhân viên

Dữ liệu ngày thuê được lưu trữ trong thuộc tính

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
69 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ượng

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
85.  

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

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
85 hợp lệ từ chuỗi ngày, sau đó so sánh hai ngày, giống như so sánh hai số

Đây là giải pháp

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
27
Sắp xếp mảng theo thứ tự tăng dần javascript không có chức năng
Sắp xếp mảng theo thứ tự tăng dần javascript không có chức năng

Tối ưu hóa phương pháp function compare(a,b) { // ... }Code language: JavaScript (javascript)2 mảng JavaScript

Trên thực tế, phương thức

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 gọi hàm so sánh nhiều lần cho mỗi phần tử trong mảng

Xem ví dụ sau

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
28

đầu ra

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
29

Làm thế nào nó hoạt động

  1. Đầu tiên, khai báo một mảng

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    89 bao gồm các tên sông nổi tiếng
  2. Thứ hai, sắp xếp mảng

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    89 theo độ dài phần tử của nó bằng phương thức

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    2. Chúng tôi xuất các phần tử của mảng

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    89 sang bảng điều khiển web bất cứ khi nào phương thức

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    2 gọi hàm so sánh

Như thể hiện trong đầu ra ở trên, mỗi phần tử đã được đánh giá nhiều lần. g. , Amazon 4 lần, Congo 2 lần, v.v.

Nếu số lượng phần tử mảng ngày càng tăng, nó sẽ có khả năng làm giảm hiệu suất

Bạn không thể giảm số lần thực hiện chức năng so sánh. Tuy nhiên, bạn có thể giảm bớt công việc so sánh phải làm. Kỹ thuật này được gọi là Biến đổi Schwartzian

Để triển khai điều này, bạn hãy làm theo các bước sau

  1. Đầu tiên, trích xuất các giá trị thực tế thành một mảng tạm thời bằng phương thức map()
  2. Thứ hai, sắp xếp mảng tạm thời với các phần tử đã được đánh giá (hoặc chuyển đổi)
  3. Thứ ba, đi bộ mảng tạm thời để có được một mảng với đúng thứ tự

Đây là giải pháp

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
0

đầu ra

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
1

Trong hướng dẫn này, bạn đã học cách sử dụng phương thức Array

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
2 của JavaScript để sắp xếp các mảng chuỗi, số, ngày tháng và đối tượng