Sort() hoạt động như thế nào trong JavaScript

Bạn có thể đoán từ tiêu đề những gì tôi sẽ nói về bài viết này. Sắp xếp là một trong những phương pháp phổ biến nhất và thường được sử dụng

Phương thức Sort() sắp xếp các phần tử của một mảng và trả về một mảng theo định dạng được sắp xếp cụ thể

Hãy xem ví dụ sau

let animals = [ "Zebra", "Bear", "Kangaroo", "Giraffe", "Lion", "Tiger", "Dog" ];
animals.sort();
console.log(animals);

// Output :  ['Bear', 'Dog', 'Giraffe', 'Kangaroo', 'Lion', 'Tiger', 'Zebra']

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Ồ. Điều đó siêu dễ dàng 😄

Bây giờ hãy xem ví dụ sau

let numbers = [ 1 , 50, 101 , 4 , 90 , 40 , 1000, 78 , 9 ];
numbers.sort();
console.log(numbers);

// Expected  Output :   [1, 4, 9, 40, 50, 78, 90, 101, 1000]
// Actual Output :   [1, 1000, 101, 4, 40, 50, 78, 9, 90]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

chờ đã. 😳 Chúng ta đã nhận được gì ở đây?


Hãy cùng tìm hiểu. 🧐

  • Từ quan sát, một điều rõ ràng là nếu mảng chỉ chứa các phần tử có kiểu dữ liệu chuỗi, chúng sẽ được sắp xếp theo thứ tự tăng dần

  • Về cơ bản, những gì xảy ra đằng sau hiện trường là mỗi phần tử trong một mảng được chuyển đổi thành chuỗi và sau đó giá trị tương đương mã UTF-16 của chúng được so sánh

  • Để làm cho nó đơn giản, hãy nhìn vào sơ đồ sau

Sort() hoạt động như thế nào trong JavaScript

  • Bây giờ chúng ta biết rằng tại sao trong ví dụ thứ hai, đầu ra lại quá tệ

  • Bởi vì chúng tôi không nhận thức được những điều đang xảy ra dưới mui xe


Sắp xếp với chức năng So sánh

  • Ngoài ra, có một dạng khác trong đó các phương thức sắp xếp có thể chấp nhận hàm gọi lại được gọi là hàm so sánh

  • Hàm so sánh chấp nhận hai tham số ( e. g a & b ) và so sánh hai giá trị này

  • Nếu nó trả về số nguyên dương thì nó đặt b trước a

  • Nếu nó trả về số nguyên âm thì nó đặt a trước b

  • Nếu nó trả về 0 thì nó sẽ giữ nguyên thứ tự

Sort() hoạt động như thế nào trong JavaScript


  • Bây giờ chúng ta sẽ thử viết một hàm để sắp xếp một mảng chứa các số

Sử dụng chức năng nội tuyến

Sort() hoạt động như thế nào trong JavaScript

Sử dụng chức năng Mũi tên

Sort() hoạt động như thế nào trong JavaScript

Sử dụng phiên bản tay ngắn

Sort() hoạt động như thế nào trong JavaScript


Giá trị trả về

  • phương thức sort() hoạt động trên nguyên tắc thuật toán thay thế
  • Nó trả về tham chiếu của mảng ban đầu

Điều đó có nghĩa là nếu chúng ta cố gắng thay đổi mảng trả về thì nó cũng sẽ thay đổi cả mảng ban đầu.

  • Hãy xem ví dụ sau

let numbers = [1, 5, 6, 7, 2, 3, 4, 8, 9 ];
let sortedArray = numbers.sort((a, b) => a - b);

console.log( " numbers : ",numbers); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log( " sortedArray : ",sortedArray); // [1, 2, 3, 4, 5, 6, 7, 8, 9];

// To check the same reference 
console.log( numbers === soretedArray); // true

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình


Ứng dụng

Trước đó, trong một cuộc phỏng vấn của tôi, tôi đã được yêu cầu viết một chương trình và vấn đề là

//Cho một danh sách các số nguyên không âm, hãy sắp xếp chúng sao cho chúng tạo thành số lớn nhất có thể. Kết quả sẽ rất lớn, do đó trả về kết quả ở dạng một chuỗi
// Đầu vào
// 3 30 34 5 9
// 546 54 60 548

// Đầu ra. 9534330;
// 6054854654;

Sort() hoạt động như thế nào trong JavaScript

Cảm ơn đã ghé qua. Nếu bạn thấy nó hữu ích hãy chia sẻ nó. Bạn có thể kết nối với tôi tại đây. LinkedIn

Trong JavaScript, chúng ta có thể sắp xếp các phần tử của một mảng một cách dễ dàng bằng một phương thức có sẵn gọi là hàm sort()

Tuy nhiên, các kiểu dữ liệu (chuỗi, số, v.v.) có thể khác nhau từ mảng này sang mảng khác. Điều này có nghĩa là chỉ sử dụng phương thức sort() không phải lúc nào cũng là một giải pháp thích hợp

Trong bài đăng này, bạn sẽ tìm hiểu cách sắp xếp một mảng trong JavaScript bằng cách sử dụng phương thức sort() cho chuỗi và số

Mảng chuỗi

Hãy bắt đầu với chuỗi

const teams = ['Real Madrid', 'Manchester Utd', 'Bayern Munich', 'Juventus'];

Khi chúng ta sử dụng phương thức sort() thì mặc định các phần tử sẽ được sắp xếp theo thứ tự tăng dần (A đến Z)

teams.sort(); 

// ['Bayern Munich', 'Juventus', 'Manchester Utd', 'Real Madrid']

Nếu bạn muốn sắp xếp mảng theo thứ tự giảm dần, bạn cần sử dụng phương thức đảo ngược ( ) để thay thế

teams.reverse();

// ['Real Madrid', 'Manchester Utd', 'Juventus', 'Bayern Munich']

Mảng số

Thật không may, sắp xếp các số không đơn giản. Nếu áp dụng trực tiếp phương pháp sắp xếp cho mảng số, chúng ta sẽ thấy một kết quả không mong muốn

const numbers = [3, 23, 12];

numbers.sort(); // --> 12, 23, 3

Tại sao phương thức sort() không hoạt động đối với các số

Trên thực tế, nó đang hoạt động, nhưng sự cố này xảy ra do JavaScript sắp xếp các số theo thứ tự bảng chữ cái. Hãy để tôi giải thích điều này một cách chi tiết

Hãy nghĩ về A=1, B=2, và C=3

const myArray = ['C', 'BC', 'AB'];

myArray.sort(); // [AB, BC, C]

Ví dụ: nếu chúng ta có ba chuỗi là C (3), BC (23) và AB (12), JavaScript sẽ sắp xếp chúng là AB, BC và C theo thứ tự tăng dần, đúng theo thứ tự bảng chữ cái

Tuy nhiên, JavaScript sẽ sắp xếp các số (một lần nữa theo bảng chữ cái) là 12, 23 và 3, điều này không chính xác

Giải pháp. Chức năng so sánh

May mắn thay, chúng ta có thể hỗ trợ phương thức sort() với một hàm so sánh cơ bản sẽ thực hiện thủ thuật này

________số 8_______

May mắn thay, phương pháp sắp xếp có thể sắp xếp các giá trị âm, 0 và dương theo đúng thứ tự. Khi phương thức sort() so sánh hai giá trị, nó sẽ gửi các giá trị đó đến hàm so sánh của chúng ta và sắp xếp các giá trị theo giá trị được trả về

  • Nếu kết quả là âm, a được sắp xếp trước b
  • Nếu kết quả là dương, b được sắp xếp trước a
  • Nếu kết quả là 0, không có gì thay đổi

Tất cả những gì chúng ta cần là sử dụng hàm so sánh bên trong phương thức sort()

const numbers = [3, 23, 12];

numbers.sort(function(a, b){return a - b}); // --> 3, 12, 23

Nếu chúng ta muốn sắp xếp các số theo thứ tự giảm dần, lần này chúng ta cần trừ tham số thứ hai (b) khỏi tham số đầu tiên (a)

const numbers = [3, 23, 12];

numbers.sort(function(a, b){return b - a}); // --> 23, 12, 3

Gói (lại

Như chúng ta có thể thấy, việc sắp xếp các phần tử của một mảng có thể được thực hiện dễ dàng trong JavaScript với phương thức sort() nếu chúng ta biết cách sử dụng nó đúng cách. Tôi hy vọng bài viết của tôi giúp bạn hiểu cách sử dụng phương thức sort() trong JavaScript đúng cách

Nếu bạn muốn tìm hiểu thêm về Phát triển web, vui lòng truy cập kênh Youtube của tôi

Cảm ơn bạn đã đọc

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Sort() hoạt động như thế nào trong JavaScript
Cem Eygi

Nhà phát triển giao diện người dùng // Theo dõi tôi trên Youtube. https. //chút. ly/3dBiTUT


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

Ví dụ về chức năng sắp xếp hoạt động như thế nào?

Hàm SORT sắp xếp nội dung của một dải hoặc mảng. Trong ví dụ này, chúng tôi đang sắp xếp theo Khu vực, Đại diện bán hàng và Sản phẩm riêng lẻ với =SORT(A2. A17), được sao chép qua các ô F2, H2 và J2 .

JavaScript sử dụng để sắp xếp cái gì?

JavaScript theo mặc định sử dụng sắp xếp chèn cho phương thức sort().

Tại sao sort() không hoạt động?

Nếu có vẻ như dữ liệu không được sắp xếp đúng cách, hãy tham khảo danh sách các giải pháp khả thi sau đây. Đảm bảo không tồn tại hàng hoặc cột ẩn nào . Sử dụng một hàng duy nhất cho tiêu đề. Nếu bạn cần một tiêu đề nhiều dòng, hãy ngắt dòng văn bản trong ô hoặc sử dụng Alt+Enter để buộc ngắt dòng trong ô.

Cách chính xác để sắp xếp các số trong JavaScript là gì?

Chúng ta có thể sử dụng . sắp xếp((a,b)=>a-b) để sắp xếp một dãy số theo thứ tự số tăng dần hoặc. sắp xếp((a,b)=>b-a) theo thứ tự giảm dần.