Trong JavaScript, phương thức
2 của một mảng sắp xếp nội dung của một mảng và trả về mảng đã sắp xếp. Việc sắp xếp này được thực hiện tại chỗ và ảnh hưởng đến mảng ban đầu. Không có bản sao được thực hiện. Sắp xếp mặc định là theo thứ tự chuỗi tăng dầnlet numbers = [33, 16, 156, 2, 9, 5, 10];
Phương thức
2 cho phép truyền hàm so sánh để thay đổi thứ tự sắp xếplet numbers = [33, 16, 156, 2, 9, 5, 10];
// Perform the default sort someArray.sort[] // Perform the sort using an arrow function for comparisons somearray.sort[[A, B] => { .. } ] // Perform the sort with an inline compare function somearray.sort[function compareFn[A, B] { .. }] // Perform the sort with a compare function somearray.sort[compareFn]
4 là chức năng so sánh tùy chọnlet numbers = [33, 16, 156, 2, 9, 5, 10];
5 là mục mảng đầu tiên được so sánhlet numbers = [33, 16, 156, 2, 9, 5, 10];
6 là mục mảng thứ hai được so sánhlet numbers = [33, 16, 156, 2, 9, 5, 10];
Nếu không cung cấp hàm so sánh, phương thức
2 sẽ sắp xếp mảng theo thứ tự chuỗi tăng dầnlet numbers = [33, 16, 156, 2, 9, 5, 10];
Đối với các mục không phải là chuỗi,
2 sẽ chuyển đổi chúng thành chuỗi trước khi so sánh chúng. Điều này có thể dẫn đến kết quả không mong muốnlet numbers = [33, 16, 156, 2, 9, 5, 10];
let numbers = [33, 16, 156, 2, 9, 5, 10];
Hàm so sánh, nếu được cung cấp, sẽ xác định cách sắp xếp của tất cả các mục không phải ____10 trong mảng. Tất cả các mục
0 được sắp xếp đến cuối mảng và không có mụclet numbers = [33, 16, 156, 2, 9, 5, 10];
0 nào được chuyển đến hàm so sánhlet numbers = [33, 16, 156, 2, 9, 5, 10];
Hàm so sánh xác định thứ tự sắp xếp như sau
Đối với chức năng
3let numbers = [33, 16, 156, 2, 9, 5, 10];
- Nếu hàm trả về một giá trị lớn hơn 0, hãy sắp xếp
6 trướclet numbers = [33, 16, 156, 2, 9, 5, 10];
5let numbers = [33, 16, 156, 2, 9, 5, 10];
- Nếu hàm trả về một giá trị nhỏ hơn 0, hãy sắp xếp
5 trướclet numbers = [33, 16, 156, 2, 9, 5, 10];
6let numbers = [33, 16, 156, 2, 9, 5, 10];
- Nếu hàm trả về giá trị bằng 0 thì vị trí của
5 vàlet numbers = [33, 16, 156, 2, 9, 5, 10];
6 không thay đổilet numbers = [33, 16, 156, 2, 9, 5, 10];
- Hàm phải trả về cùng một kết quả cho bất kỳ cặp giá trị cụ thể nào
5 vàlet numbers = [33, 16, 156, 2, 9, 5, 10];
6 được cung cấp. Mặt khác, thứ tự sắp xếp không được xác địnhlet numbers = [33, 16, 156, 2, 9, 5, 10];
Để sắp xếp một mảng theo thứ tự số thay vì thứ tự chuỗi, hàm sau có thể được sử dụng miễn là mảng không chứa
2 hoặclet numbers = [33, 16, 156, 2, 9, 5, 10];
numbers.sort[function compareFn[A, B] {
3let numbers = [33, 16, 156, 2, 9, 5, 10];
numbers.sort[function compareFn[A, B] {
Đôi khi bạn có thể có một mảng từ mà bạn muốn sắp xếp từng từ theo thứ tự bảng chữ cái [từ a-z]. Hoặc bạn có thể có một mảng đối tượng chứa thông tin người dùng bao gồm tên, chẳng hạn, nơi bạn muốn sắp xếp người dùng theo tên của họ
Chúng ta có thể làm điều này trong JavaScript bằng cách sử dụng trực tiếp phương thức
1 hoặc bằng hàm so sánhlet names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
Trong trường hợp bạn đang vội, đây là hai cách
// order an array of names names.sort[]; // order an array of objects with name users.sort[function [a, b] { if [a.name < b.name] { return -1; } if [a.name > b.name] { return 1; } return 0; }];
Bây giờ chúng ta hãy tìm hiểu làm thế nào chúng ta đi đến cả hai giải pháp
Cách sắp xếp một mảng tên theo thứ tự bảng chữ cái
Giả sử chúng ta có một mảng tên
________số 8 Chúng ta có thể sắp xếp các tên này theo thứ tự bảng chữ cái bằng cách sử dụng phương pháp
1let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
2let numbers = [33, 16, 156, 2, 9, 5, 10];
Điều này sẽ trả về một mảng các tên được sắp xếp theo thứ tự bảng chữ cái
3let numbers = [33, 16, 156, 2, 9, 5, 10];
Ghi chú. Trong trường hợp một số tên bắt đầu bằng chữ hoa trong khi những tên khác bắt đầu bằng chữ thường, thì đầu ra sẽ không chính xác vì phương thức
1 đặt chữ hoa trước chữ thườnglet names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
5let numbers = [33, 16, 156, 2, 9, 5, 10];
Vì vậy, bạn sẽ cần đảm bảo rằng tất cả các từ đều ở trong cùng một trường hợp, nếu không, nó sẽ không trả về tên theo thứ tự bảng chữ cái như chúng ta mong muốn
Cách sắp xếp theo tên theo bảng chữ cái trong JavaScript
Trong một kịch bản trong thế giới thực, chúng ta có thể có một mảng người dùng với thông tin của từng người dùng trong một đối tượng. Thông tin này có thể là bất cứ thứ gì bên cạnh tên của người dùng. Ví dụ
6let numbers = [33, 16, 156, 2, 9, 5, 10];
Nhìn vào đối tượng ở trên, phương thức trước đó mà chúng ta vừa áp dụng trực tiếp phương thức
1 trên mảng sẽ không hoạt động. Thay vào đó, nó sẽ đưa ra cùng một mảng nhưng các mục sẽ không theo thứ tự mà chúng ta muốnlet names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
Chúng ta sẽ sử dụng phương thức
1 cùng với hàm so sánh để sắp xếp mảng người dùng này theo tênlet names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
Chúng ta sẽ sử dụng hàm so sánh để xác định thứ tự sắp xếp thay thế. Nó trả về một giá trị âm, 0 hoặc dương, tùy thuộc vào các đối số
cú pháp
9let numbers = [33, 16, 156, 2, 9, 5, 10];
Khi chúng ta chuyển hàm so sánh này vào phương thức
1, nó sẽ so sánh từng giá trị dựa trên điều kiện chúng ta đặt và sau đó sắp xếp từng tên theo giá trị trả về [âm, 0, dương]let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
- Nếu kết quả là âm,
7 được sắp xếp trướclet names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
8let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
- Nếu kết quả là dương,
8 được sắp xếp trước `a'let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
- Nếu kết quả là
20, không có thay đổi nào được thực hiện đối với thứ tự sắp xếp của hai giá trịlet numbers = [33, 16, 156, 2, 9, 5, 10];
Sử dụng ví dụ trên, bây giờ chúng ta có thể sử dụng phương thức
let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
1 cùng với hàm so sánh theo cách này6let numbers = [33, 16, 156, 2, 9, 5, 10];
Đoạn mã trên so sánh từng tên. Nếu nó lớn hơn, nó trả về 1. Nếu nhỏ hơn, nó trả về -1. Nếu không, nó trả về 0. Giá trị trả về được sử dụng để sắp xếp thứ tự các giá trị của mảng theo thứ tự bảng chữ cái
7let numbers = [33, 16, 156, 2, 9, 5, 10];
Ghi chú. Giống như chúng ta đã thấy trước đây, điều này luôn hoạt động theo kiểu chữ cái và sẽ sắp xếp chữ hoa trước chữ thường
8let numbers = [33, 16, 156, 2, 9, 5, 10];
đầu ra
0let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
kết thúc
Trong bài viết này, bạn đã học cách sắp xếp một mảng theo thứ tự bảng chữ cái bằng cách sử dụng phương thức
1 trong hai tình huống có thể xảy ralet names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
Trong trường hợp tên có các cách viết hoa khác nhau, tốt nhất trước tiên bạn nên chuyển đổi chúng thành một cách viết hoa cụ thể trước khi sử dụng phương thức
1let names = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
Mã hóa vui vẻ
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Joel Olawanle Nhà phát triển Frontend & Người viết kỹ thuật
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu
Làm cách nào để tạo chức năng sắp xếp trong JavaScript?
Để xác định chức năng sắp xếp tùy chỉnh, bạn cần so sánh giá trị đầu tiên với giá trị thứ hai . Nếu giá trị đầu tiên lớn hơn giá trị thứ hai, trả về -1. Nếu giá trị đầu tiên nhỏ hơn giá trị thứ hai, trả về 1 nếu không thì trả về 0. Quá trình trên sẽ sắp xếp dữ liệu theo thứ tự giảm dần.Có chức năng sắp xếp trong JavaScript không?
Phương thức sort[] 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.Điều gì xảy ra nếu chúng ta chuyển 1 làm đối số cho hàm sắp xếp?
Tất cả các đối số phải có cùng kích thước. Nếu đối số thứ tự sắp xếp không phải là -1 hoặc 1, thì công thức sẽ trả về #VALUE. lỗi . Nếu bạn bỏ qua đối số thứ tự sắp xếp, Excel sẽ mặc định sắp xếp theo thứ tự tăng dần.Làm cách nào để sắp xếp một mảng mà không sử dụng phương thức sắp xếp trong JavaScript?
hàm ordre[liste]{ var result=[]; . chiều dài; . chiều dài;