Làm thế nào để bạn sắp xếp từ điển trong javascript?
Số nguyên theo thứ tự từ điển cho cấp độ (lên) Show
xuất bản 1. 0. 1 • 5 năm trướcxuất bản 1. 0. 15 năm trước Trình tạo định danh, có thể sắp xếp theo từ điển, duy nhất trên toàn cầu xuất bản 2. 3. 0 • 5 năm trướcxuất bản 2. 3. 0 5 năm trước Phương thức 7 sắp xếp các phần tử của một mảng tại chỗ và trả về tham chiếu cho cùng một mảng, hiện đã được sắp xếp. Thứ tự sắp xếp mặc định tăng dần, được xây dựng dựa trên việc chuyển đổi các phần tử thành chuỗi, sau đó so sánh các chuỗi giá trị đơn vị mã UTF-16 của chúngĐộ phức tạp về thời gian và không gian của sắp xếp không thể được đảm bảo vì nó phụ thuộc vào việc triển khai Thử nócú pháp
Thông số 8 Tùy chọnChỉ định một hàm xác định thứ tự sắp xếp. Nếu bỏ qua, các phần tử mảng được chuyển đổi thành chuỗi, sau đó được sắp xếp theo giá trị điểm mã Unicode của từng ký tự 9Yếu tố so sánh đầu tiên 0Yếu tố thứ hai để so sánh Giá trị trả vềTham chiếu đến mảng ban đầu, hiện đã được sắp xếp. Lưu ý rằng mảng được sắp xếp tại chỗ và không có bản sao nào được thực hiện Sự mô tảNếu 8 không được cung cấp, tất cả các phần tử mảng không phải 2 được sắp xếp bằng cách chuyển đổi chúng thành chuỗi và so sánh các chuỗi theo thứ tự đơn vị mã UTF-16. Ví dụ: "chuối" đứng trước "anh đào". Trong sắp xếp số, 9 đứng trước 80, nhưng vì số được chuyển đổi thành chuỗi nên "80" đứng trước "9" theo thứ tự Unicode. Tất cả các phần tử của 2 được sắp xếp đến cuối mảngPhương pháp 7 bảo tồn các vị trí trống. Nếu mảng nguồn thưa thớt, các vị trí trống sẽ được di chuyển đến cuối mảng và luôn xuất hiện sau tất cả các 2Ghi chú. Trong UTF-16, các ký tự Unicode trên 6 được mã hóa thành hai đơn vị mã thay thế, thuộc phạm vi 7 - 8. Giá trị của từng đơn vị mã được tính riêng để so sánh. Do đó, ký tự được tạo bởi cặp thay thế 9 sẽ được sắp xếp trước ký tự 40Nếu cung cấp 8, tất cả các phần tử mảng không phải ____42 được sắp xếp theo giá trị trả về của hàm so sánh (tất cả các phần tử 2 được sắp xếp đến cuối mảng, không có lệnh gọi đến 8) 45 giá trị trả về thứ tự sắp xếp> 0sắp xếp 9 sau 0< 0sắp xếp 9 trước 0=== 0giữ nguyên thứ tự ban đầu của 9 và 0Vì vậy, hàm so sánh có dạng sau
Chính thức hơn, bộ so sánh dự kiến sẽ có các thuộc tính sau, để đảm bảo hành vi sắp xếp phù hợp
Một bộ so sánh phù hợp với các ràng buộc ở trên sẽ luôn có thể trả về tất cả 79, 75 và 61 hoặc trả về một cách nhất quán 75. Ví dụ: nếu một bộ so sánh chỉ trả về 79 và 75 hoặc chỉ trả về 75 và 61, thì nó sẽ không thể sắp xếp một cách đáng tin cậy vì tính đối xứng bị phá vỡ. Một bộ so sánh luôn trả về 75 sẽ khiến mảng hoàn toàn không bị thay đổi, nhưng vẫn đáng tin cậyBộ so sánh từ điển mặc định thỏa mãn tất cả các ràng buộc ở trên Để so sánh các số thay vì chuỗi, hàm so sánh có thể trừ 0 khỏi 9. Hàm sau sẽ sắp xếp mảng theo thứ tự tăng dần (nếu nó không chứa 50 và 51)
Phương pháp 7 là chung chung. Nó chỉ mong đợi giá trị 53 có thuộc tính 54 và các thuộc tính có khóa số nguyên. Mặc dù các chuỗi cũng giống như mảng, nhưng phương pháp này không phù hợp để áp dụng cho chúng, vì các chuỗi là bất biếnví dụTạo, hiển thị và sắp xếp một mảngVí dụ sau tạo bốn mảng và hiển thị mảng ban đầu, sau đó là các mảng đã sắp xếp. Các mảng số được sắp xếp mà không có hàm so sánh, sau đó được sắp xếp bằng một 4Sắp xếp mảng đối tượngMảng đối tượng có thể được sắp xếp bằng cách so sánh giá trị của một trong các thuộc tính của chúng 7Sắp xếp các ký tự không phải ASCIIĐể sắp xếp các chuỗi có ký tự không phải ASCII, tôi. e. các chuỗi có ký tự có dấu (e, é, è, a, ä, v.v. ), chuỗi từ các ngôn ngữ không phải tiếng Anh, sử dụng 55. Hàm này có thể so sánh các ký tự đó để chúng xuất hiện theo đúng thứ tự 6Sắp xếp theo bản đồ 8 có thể được gọi nhiều lần cho mỗi phần tử trong mảng. Tùy thuộc vào bản chất của 8, điều này có thể mang lại chi phí cao. 8 càng làm nhiều việc và càng có nhiều yếu tố để sắp xếp, thì việc sử dụng 59 để sắp xếp có thể hiệu quả hơn. Ý tưởng là duyệt qua mảng một lần để trích xuất các giá trị thực được sử dụng để sắp xếp thành một mảng tạm thời, sắp xếp mảng tạm thời, sau đó duyệt qua mảng tạm thời để đạt được thứ tự đúng 5Có sẵn một thư viện mã nguồn mở được gọi là mapsort áp dụng phương pháp này sort() trả về tham chiếu đến cùng một mảngPhương thức 7 trả về một tham chiếu đến mảng ban đầu, do đó, việc thay đổi mảng được trả về cũng sẽ thay đổi cả mảng ban đầu 1Trong trường hợp bạn muốn 7 không làm thay đổi mảng ban đầu mà trả về một mảng được sao chép nông giống như các phương thức mảng khác (e. g. 59) làm, bạn có thể sao chép nông trước khi gọi 7, sử dụng cú pháp trải rộng hoặc 14 6Sắp xếp ổn địnhKể từ phiên bản 10 (hoặc ECMAScript 2019), thông số kỹ thuật chỉ ra rằng 15 ổn địnhVí dụ: giả sử bạn có danh sách học sinh cùng với điểm của họ. Lưu ý rằng danh sách sinh viên đã được sắp xếp sẵn theo tên theo thứ tự bảng chữ cái 8Sau khi sắp xếp mảng này theo thứ tự tăng dần của 16 0Biến 17 sau đó sẽ có giá trị như sau 1Điều quan trọng cần lưu ý là những học sinh có cùng điểm (ví dụ: Alex và Devlin), sẽ giữ nguyên thứ tự như trước khi gọi sắp xếp. Đây là điều mà thuật toán sắp xếp ổn định đảm bảo Trước phiên bản 10 (hoặc ECMAScript 2019), tính ổn định sắp xếp không được đảm bảo, nghĩa là bạn có thể gặp phải những vấn đề sau 2Sắp xếp với bộ so sánh không được định dạng tốtNếu một chức năng so sánh không đáp ứng tất cả các quy tắc thuần túy, ổn định, phản xạ, phản đối xứng và bắc cầu, như được giải thích trong phần mô tả, thì hành vi của chương trình không được xác định rõ Ví dụ, xem xét mã này 3Hàm 8 ở đây không được định dạng tốt vì nó không thỏa mãn phản đối xứng. nếu 19, nó trả về 79; . Do đó, mảng kết quả sẽ khác nhau giữa các công cụ. Ví dụ: V8 (được sử dụng bởi Chrome, Node. js, v.v. ) và JavaScriptCore (được sử dụng bởi Safari) hoàn toàn không sắp xếp mảng và trả về 64, trong khi SpiderMonkey (được sử dụng bởi Firefox) sẽ trả về mảng được sắp xếp tăng dần, như 65Tuy nhiên, nếu hàm 8 bị thay đổi một chút để nó trả về 61 hoặc 75 4Sau đó, V8 và JavaScriptCore sắp xếp nó giảm dần, như 69, trong khi SpiderMonkey trả về nguyên trạng. 64Do sự không nhất quán trong việc triển khai này, bạn luôn nên làm cho bộ so sánh của mình được định dạng tốt bằng cách tuân theo năm ràng buộc Sử dụng sort() trên các mảng thưa thớtCác vị trí trống được di chuyển đến cuối mảng 5Gọi sort() trên các đối tượng không phải mảngPhương thức 7 đọc thuộc tính 54 của 53. Sau đó, nó thu thập tất cả các thuộc tính khóa số nguyên hiện có trong phạm vi từ 75 đến 85, sắp xếp chúng và ghi lại chúng. Nếu có các thuộc tính bị thiếu trong phạm vi, các thuộc tính theo sau tương ứng sẽ bị xóa, như thể các thuộc tính không tồn tại được sắp xếp về cuối
Ý nghĩa của việc sắp xếp từ điển là gì?Tổng quan. Thứ tự từ điển là sự sắp xếp các ký tự, từ hoặc số theo thứ tự bảng chữ cái , nghĩa là các chữ cái được sắp xếp từ A-Z. Điều này còn được gọi là thứ tự từ điển vì nó tương tự như tìm kiếm một từ cụ thể trong từ điển thực tế.
Điều gì đến trước theo thứ tự từ điển?Tất cả chữ hoa đứng trước chữ thường . Nếu hai chữ cái giống nhau, thì thứ tự chữ cái được sử dụng để so sánh chúng. Nếu hai chuỗi chứa các ký tự giống nhau ở cùng một vị trí thì chuỗi ngắn nhất sẽ xuất hiện trước. |