Bài viết này hướng dẫn bạn cách sử dụng phương thức Array. sort[] as THẾ NÀO TRONG Javascript. Javascript cung cấp một phương thức cho phép sắp xếp các phần tử trong mảng. cú pháp. Mảng. sắp xếp [] Mảng. sort[sortFunction] Use Array. sort[] Theo default…
Bài viết này hướng dẫn bạn cách sử dụng phương thức Array. sort[] as THẾ NÀO TRONG Javascript. Javascript cung cấp một phương thức cho phép sắp xếp các phần tử trong mảng
cú pháp
Array.sort[] Array.sort[sortFunction]
Use Array. loại[]
Theo mặc định, Javascript sắp xếp các phần tử trong mảng tăng dần dựa trên phương thức toString[] trên từng phần tử
Ví dụ 1. 1
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];
Kết quả như sau
Da nang,Ha noi,Ho Chi Minh
1,10,11,12,3,5
Ví dụ 1. 2. sắp xếp một mảng các đối tượng.
// xây dựng một object Person function Person[id, name]{ this.id = id; this.name = name; // override phương thức toString this.toString = function[]{ return this.name; }; } // khởi tạo mảng var arrayPerson = []; arrayPerson.push[new Person[1, "Jackie"]]; arrayPerson.push[new Person[2, "Anna"]]; arrayPerson.push[new Person[3, "Avi"]]; // sort alert[arrayPerson.sort[]];
Khi sắp xếp hạng, Javascript sẽ gọi đến phương thức toString[] của từng phần tử, và sắp xếp, kết quả là
Anna,Avi,Jackie
Ví dụ 1. 2 for found method toString[] has been call when javascript thực hiện sắp xếp
Sử dụng phương thức Array. sắp xếp[chức năng sắp xếp]
Với cú pháp thứ 2 của phương thức sort[], chúng ta có thể tùy biến các kiểu sắp xếp khác nhau như tăng dần, giảm dần, sắp xếp số, chuỗi, sắp xếp theo thuộc tính của đối tượng…
Theo mặc định, Javascript sẽ sắp xếp tăng dần từ trên xuống, vì vậy, để tùy biến điều chỉnh này, chúng ta cần cung cấp cho phương thức sort[] tham số sortFunction. This number is an function, return a in 3 value after. 1 [lớn hơn], 0 [bằng], -1 [nhỏ hơn]
Như có thể xuất 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ử của mảng đang tăng lên, nó sẽ có khả năng làm giảm hiệu suất
1Code language: JSON / JSON with Comments [json]
[ 0, 1, 10, 2, 20, 3, 30 ]
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 bớt công việc mà so sánh phải làm. Kỹ thuật này được gọi là biến Schwartzian
Đây là bài viết số 41 của Series - mục đích viết javascript giúp các bạn có thể tiết kiệm được nhiều thời gian để làm các công việc khác. Ngoài ra, bạn có thể học nâng cao hơn trong Series - Con đường kiến trúc sư ở đó tập trung nhiều vào xử lý các vấn đề khó hơn
Hôm nay bài viết có lẽ tôi khó có thể viết tốt hơn được tác giả, bạn muốn đọc vui lòng truy cập liên kết gốc dưới bài viết, mục đích muốn chia sẻ một số trường hợp sử dụng biến phổ biến nhất cho
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
7 phương thức Mảng trong JavaScript. Các phương pháp ____47 sắp xếp các yếu tố của một mảng và trả về các mảng được sắp xếp. Thứ tự sắp xếp mặc định tăng dần và giảm dần. Trong bài viết này, bạn sẽ xem làm thế nào chúng ta có thể sử dụng sức mạnh của nó một cách tối đa vềlet fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
7Trước khi bắt đầu bạn cũng nên xem qua 10 tính năng phổ biến nhất của Array mà bất kỳ bạn nào cũng nên biết. Ok, đi thôi
Tăng dần [A đến Z]
Chúng ta có thể sắp xếp một chuỗi đơn giản bằng cách sử dụng một phương thức mảng
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
7 which does not have a function as afterGiảm dần [Z đến A]. Để sắp xếp các chuỗi mảng theo thứ tự giảm dần, chúng ta có thể sử dụng phương thức String
let fruits = ['Apples', 'Watermelon', 'Bananas', 'cherries'];
fruits.sort[];
console.log[ fruits ];
// ["Apples", "Bananas", "Watermelon", "cherries"]
// A → B → W → c
Như bạn có thể thấy đầu ra ở trên, với từ sắp xếp mặc định thì `Watermelon` bắt đầu bằng chữ hoa `W` sẽ đứng trước `cherries` bắt đầu bằng chữ thường là `c`. Điều này xảy ra vì các chuỗi được sắp xếp theo giá trị điểm mã `Unicode` của mỗi ký tự. Sử dụng `charCodeAt[]` chúng ta có thể nhận được đơn vị mã `UTF-16` cho mỗi ký tự và sau đó nhận thấy rằng:
```js
'C'.charCodeAt[] // 67
'W'.charCodeAt[] // 87
'c'.charCodeAt[] // 99
// 67 < 87 < 99
// C → W → c
1 as after. Để sắp xếp các chuỗi mảng theo thứ tự giảm dần, chúng ta có thể sử dụng phương thức Stringvar arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];01 như sau.
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
Sử dụng sort[] có sự phân biệt chữ hoa và thông thường
Trước tiên, chúng ta hãy xem điều gì sẽ xảy ra khi chúng ta sắp xếp mặc định cho một mảng có chứa cả phần tử chuỗi chữ thường và chữ hoa
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];0
Tăng dần [aA đến zZ]. Đó là một sơ đồ nếu bạn không biết có thể đi tìm rất mệt mỏi, để giải quyết vấn đề đó thì một giải pháp được đưa ra là chuyển tất cả các vấn đề
let fruits = ['Apples', 'Watermelon', 'Bananas', 'cherries'];
fruits.sort[];
console.log[ fruits ];
// ["Apples", "Bananas", "Watermelon", "cherries"]
// A → B → W → c
Như bạn có thể thấy đầu ra ở trên, với từ sắp xếp mặc định thì `Watermelon` bắt đầu bằng chữ hoa `W` sẽ đứng trước `cherries` bắt đầu bằng chữ thường là `c`. Điều này xảy ra vì các chuỗi được sắp xếp theo giá trị điểm mã `Unicode` của mỗi ký tự. Sử dụng `charCodeAt[]` chúng ta có thể nhận được đơn vị mã `UTF-16` cho mỗi ký tự và sau đó nhận thấy rằng:
```js
'C'.charCodeAt[] // 67
'W'.charCodeAt[] // 87
'c'.charCodeAt[] // 99
// 67 < 87 < 99
// C → W → c
2 về chữ thường và sau đó chúng ta tiếp tục so sánh. Bạn có thể xem ví dụ dưới đây. Đó là một sơ đồ nếu bạn không biết có thể đi tìm rất mệt mỏi, để giải quyết vấn đề đó thì một giải pháp được đưa ra đó là chuyển tất cả các var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];02 về chữ thường và sau đó chúng ta tiếp tục so sánh. Bạn có thể xem ví dụ dưới đây.
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
2Hoặc một giải pháp khác
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
3Sắp xếp số mảng JavaScript
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
4Trong ví dụ trên, chúng ta có thể thấy rằng nếu chúng ta sử dụng một sắp xếp mặc định như ví dụ trên, chúng ta sẽ nhận được đầu ra không chính xác,
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];03 sẽ đứng trước
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];04, khi mà đáng ra
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];03 nằm ở vị trí cuối cùng. Điều này xảy ra bởi vì các phần tử của mảng được sắp xếp theo 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ã
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];06. Vì vậy, trong một sắp xếp số, 2 phải đứng trước 10, nhưng vì các số đã được chuyển đổi thành chuỗi, nên
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];07 đứng trước
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];08 theo thứ tự Unicode
Giải pháp sắp xếp tăng dần. Chúng ta có thể sắp xếp một mảng số theo thứ tự tăng dần bằng cách sử dụng một hàm so sánh đơn giản như thế Chúng ta có thể sắp xếp một mảng số theo thứ tự tăng dần bằng cách sử dụng một hàm so sánh đơn giản
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
1Giải pháp sắp xếp giảm dần. To sort an array number theo thứ tự giảm dần, chúng ta có thể chỉ cần thay đổi
let fruits = ['Apples', 'Watermelon', 'Bananas', 'cherries'];
fruits.sort[];
console.log[ fruits ];
// ["Apples", "Bananas", "Watermelon", "cherries"]
// A → B → W → c
Như bạn có thể thấy đầu ra ở trên, với từ sắp xếp mặc định thì `Watermelon` bắt đầu bằng chữ hoa `W` sẽ đứng trước `cherries` bắt đầu bằng chữ thường là `c`. Điều này xảy ra vì các chuỗi được sắp xếp theo giá trị điểm mã `Unicode` của mỗi ký tự. Sử dụng `charCodeAt[]` chúng ta có thể nhận được đơn vị mã `UTF-16` cho mỗi ký tự và sau đó nhận thấy rằng:
```js
'C'.charCodeAt[] // 67
'W'.charCodeAt[] // 87
'c'.charCodeAt[] // 99
// 67 < 87 < 99
// C → W → c
9 as after. Để sắp xếp một mảng số theo thứ tự giảm dần, chúng ta có thể chỉ cần thay đổi ______109 như saulet fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
4Sắp xếp một mảng với định dạng Date
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
5Trong ví dụ trên, chúng ta có thể thấy chuỗi ngày đó
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
20 đến trướclet fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
21 đó không phải là kết quả chính xác. Điều này xảy ra bởi vì lý do tương tự khi sắp xếp các mảng số, nơi mà chúng tôi đã tìm thấyvar arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];03 trước đây
var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];04 khi sử dụng sắp xếp mặc định
Tăng dần Để sắp xếp đúng một chuỗi ngày, chúng ta có thể tạo một đối tượng
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
04 bằng cách chuyển chuỗi ngày vàolet fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
25 bên trong hàm so sánh như sau. Để sắp xếp đúng một chuỗi ngày, chúng ta có thể tạo một đối tượnglet fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
24 bằng cách chuyển chuỗi ngày thànhlet fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
25 bên trong hàm so sánh như sau. let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
4dần dần. Đối với thứ tự giảm dần, chúng ta có thể chỉ cần thay đổi như sau. Đối với thứ tự giảm dần, chúng ta có thể chỉ cần thay đổi như sau
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
0Sắp xếp mảng đối tượng javascript theo khóa
Chúng ta có thể sắp xếp một mảng các đối tượng theo một giá trị thuộc tính như sau
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
1Đó là thứ sắp xếp cho thứ tự tăng dần và bạn cũng có thể làm ngược lại với thứ tự giảm dần
dần dần. Đối với logic thứ tự giảm dần, chúng ta chỉ cần thay đổi
let fruits = ['Apples', 'Watermelon', 'Bananas', 'cherries'];
fruits.sort[];
console.log[ fruits ];
// ["Apples", "Bananas", "Watermelon", "cherries"]
// A → B → W → c
Như bạn có thể thấy đầu ra ở trên, với từ sắp xếp mặc định thì `Watermelon` bắt đầu bằng chữ hoa `W` sẽ đứng trước `cherries` bắt đầu bằng chữ thường là `c`. Điều này xảy ra vì các chuỗi được sắp xếp theo giá trị điểm mã `Unicode` của mỗi ký tự. Sử dụng `charCodeAt[]` chúng ta có thể nhận được đơn vị mã `UTF-16` cho mỗi ký tự và sau đó nhận thấy rằng:
```js
'C'.charCodeAt[] // 67
'W'.charCodeAt[] // 87
'c'.charCodeAt[] // 99
// 67 < 87 < 99
// C → W → c
9 trong hàm so sánh sắp xếp như. Đối với logic thứ tự giảm dần, chúng ta chỉ cần thay đổi var arrayString = ['Ho chi minh', 'Da nang', 'Ha noi']; var arrayNumber = [10, 5, 3, 12, 1, 11]; alert[arrayString.sort[]]; alert[arrayNumber.sort[]];09 trong hàm so sánh sắp xếp như.
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
2Sắp xếp mảng đối tượng javascript theo nhiều khóa
Tăng dần. Giả sử chúng ta có một mảng như thế này
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
3Yêu cầu của chúng tôi là
Đầu tiên, chúng ta cần sắp xếp các giá trị có thuộc tính
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
27 theo thứ tự tăng dần, sau đó thêm một điều kiện nữa đó làlet fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
28 tăng dần theo. Vì vậy, kết qủa sẽ như thế nàyBạn có thể làm theo nhiều cách nhưng có vẻ như cách này khá phổ biến nhất
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
4// Đầu ra giống như trong bảng trên Hoặc, bạn cũng có thể viết điều này trong một dòng như
let fruits = ['Apples', 'Watermelon', 'Bananas', 'Cherries'];
fruits.sort[[a, b] => b.localeCompare[a]];
console.log[ fruits ];
// ["Watermelon", "Cherries", "Bananas", "Apples"]
// W → C → B → A
5and results does not have anything change
Tóm tắt
Bài viết này thật ra nó không mới nên nhiều bạn đã có kinh nghiệm với javascript rồi. Nhưng nó là một tài liệu tốt về cách sắp xếp trong mảng. Và đây là một bài viết được biên dịch lại từ bài viết gốc của tác giả Palash Mondal. Bạn có thể tham khảo ý kiến hơn tại bài viết gốc. Chúc các bạn đạo code giỏi hơn nữa. ]