Sắp xếp lại mảng javascript

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

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

Code language: JSON / JSON with Comments [json]
1

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
7

Trướ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 after

________số 8

Giả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 String
 
     var 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
2

Hoặ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
3

Sắ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
4

Trong 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
1

Giả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ư 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
4

Sắ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
5

Trong 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ướ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
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ấy
 
     var 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ào
let 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ượ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
24 bằng cách chuyển chuỗi ngày thà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
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
4

dầ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
0

Sắ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
2

Sắ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
3

Yê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ày

Bạ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
5

and 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. ]

Chủ Đề