Bạn đang xem : javascript sort int array

Giới thiệu phương thức .sort có thể được sử dụng để sắp xếp một mảng theo thứ tự cụ thể, hướng dẫn này có mục đích giải thích lý do tại sao phương pháp này cần một hàm so sánh nếu bạn muốn sắp xếp một mảng các số nguyên một cách chính xác.

Hàm so sánh này sẽ chỉ định thứ tự sắp xếp. Ngoài ra, chúng tôi sẽ giải thích cách sử dụng nó để sắp xếp thứ tự giảm dần, cộng với một cách ngắn hơn để sử dụng tất cả cùng nhau, bằng cách sử dụng hàm so sánh như một Hàm mũi tên trong phương thức .sort .

Sắp xếp Mảng Số nguyên trong JavaScript Sử dụng Phương pháp .sort < / h2>

Phương thức .sort là một phương thức của thực thể Array trả về một mảng có thứ tự từ mảng mà phương thức này ban đầu được gọi. Ví dụ:

  // Đầu vào
cho mảng = [10, 10000, 1000, 100, 1]
console.log (array.sort ())
 

Đầu ra:

  // Đầu ra
[1, 10, 100, 1000, 10000]
 

Chắc chắn, điều này được mong đợi vì phương thức .sort sắp xếp thứ tự mảng. Tuy nhiên, nếu chúng ta có dữ liệu đầu vào dưới đây:

  // Đầu vào
cho mảng = [12900, 877, 12, 992, 10000]
console.log (array.sort ())
 

Chúng tôi có một thứ tự sai như sau:

  // Đầu ra
[10000, 12, 12900, 877, 992]
 

Điều này xảy ra vì thứ tự mặc định của .sort dựa trên UTF-16 hoặc Định dạng chuyển đổi đơn vị 16 bit < / code>, là một mã hóa của mẫu Unicode. Phương thức này chuyển đổi các giá trị mảng thành kiểu chuỗi và sau đó sắp xếp thứ tự các giá trị Unicode của chúng.

Với điều này được giải thích, phương thức .sort cũng có thể được sử dụng để sắp xếp các kiểu dữ liệu khác, không chỉ các số.

Nhưng làm cách nào để sử dụng phương thức .sort để sắp xếp một mảng một cách chính xác? Rất đơn giản: bằng cách sử dụng Hàm so sánh.

Truyền một Hàm so sánh làm Tham số

Như Phương thức .sort có thể được sử dụng mà không có bất kỳ tham số nào, một Hàm So sánh là tùy chọn. Về cơ bản, hàm này xác định thứ tự phương thức .sort và hàm này nhận hai tham số: phần tử đầu tiên được so sánh và phần tử thứ hai được so sánh.

.sort method sẽ:

  • Đặt đầu tiên sau thứ hai nếu CompareFunction trả về một giá trị lớn hơn 0;
  • Đặt đầu tiên trước thứ hai nếu CompareFunction trả về giá trị nhỏ hơn 0;
  • Không làm gì nếu CompareFunction trả về giá trị bằng 0.

Vì vậy, với so sánhFunction (thứ nhất, thứ hai) , chúng ta có thể chỉ định thứ tự sắp xếp bằng cách chuyển một thao tác giữa các tham số đầu tiên thứ hai . Theo thứ tự tăng dần,

  // Thứ tự tăng dần
function so sánhFunction (thứ nhất, thứ hai) {
    if (first & gt; second) return 1 // 1 lớn hơn 0, vì vậy .sort sẽ đặt đầu tiên sau giây.
    if (first & lt; second) return -1 // -1 nhỏ hơn 0, vì vậy .sort sẽ đặt đầu tiên trước giây.
    trả về 0
}
 

Và đối với thứ tự giảm dần, chúng ta có thể đảo ngược các toán tử.

  // Thứ tự giảm dần
function so sánhFunction (thứ nhất, thứ hai) {
    if (first & lt; second) return 1 // 1 lớn hơn 0, vì vậy .sort sẽ đặt đầu tiên sau giây.
    if (first & gt; second) return -1 // -1 nhỏ hơn 0, vì vậy .sort sẽ đặt đầu tiên trước giây.
    trả về 0
}
 

Bây giờ, đặt CompareFunction cho thứ tự tăng dần cùng với phương thức .sort , cuối cùng, chúng ta có:

  // Đầu vào:
cho mảng = [12900, 877, 12, 992, 10000]
// Tăng dần
array.sort (function so sánhFunction (thứ nhất, thứ hai) {
    if (first & gt; second) return 1 // 1 lớn hơn 0, vì vậy .sort sẽ đặt đầu tiên trước giây.
    if (first & lt; second) return -1 // -1 nhỏ hơn 0, vì vậy .sort sẽ đặt đầu tiên sau giây.
    trả về 0
})
console.log (mảng)
 

Đầu ra:

  / / Đầu ra:
[12, 877, 992, 10000, 12900]
 

Sắp xếp một mảng số nguyên trong JavaScript bằng cách sử dụng hàm mũi tên

Chúng tôi cũng có thể giảm tất cả khối mã xuống một cú pháp tối thiểu, bằng cách sử dụng các hàm Mũi tên.

Một hàm Mũi tên là một cách khác để sử dụng một hàm có cú pháp ngắn hơn. Hàm mũi tên là các hàm ẩn danh và điều này có nghĩa là chúng không được đặt tên (được lưu trữ trong các biến hoặc được truyền dưới dạng tham số hàm) và không thể được sử dụng trong mọi trường hợp.

Với cấu trúc của một Hàm mũi tên, các hàm truyền thống có thể được chuyển đổi thành một khối ngắn hơn, như ví dụ:

  // Hàm ẩn danh phổ biến
hàm (x) {
    trả về x + 1;
}

// Hàm mũi tên
(x) = & gt; x + 1
 

Ngoài ra, cấu trúc của Hàm mũi tên có thể tự động trả về giá trị biểu thức mà không cần từ dành riêng return :

  // Hàm mũi tên
hãy để arrowFunction = (x) = & gt; x + 1
console.log (arrowFunction (1))
 

Đầu ra:

  // Đầu ra
2
 

console.log () in giá trị của 1 + 1 , tức là 2 chẵn mặc dù arrowFunction không sử dụng câu lệnh return . Nó sẽ giúp chúng ta trong bước tiếp theo.

Như đã nói, phương thức .sort có thể có Hàm so sánh bên trong nó và hàm này có thể là Hàm mũi tên. Chuyển đổi cấu trúc Hàm so sánh trước đó, chúng ta có thể chuyển đổi tất cả khối mã đó thành một khối ngắn hơn như sau:

  // Đầu vào:
cho mảng = [10000, 10, 100, 1000, 1]
array.sort ((đầu tiên, thứ hai) = & gt; {
    if (đầu tiên & gt; thứ hai) trả về 1
    trả về -1
})
// Tăng dần: Nếu đầu tiên & gt; thứ hai == true, sau đó thay đổi cái kia.
console.log (mảng)
 

Chúng tôi có thể giảm điều kiện xuống đầu tiên & lt; thứ hai và thay vào đó, trả về giá trị -1 làm mặc định nếu điều kiện chính không phải là trường hợp; cho rằng giá trị 0 của phương thức .sort là các giá trị bằng nhau và bằng cách này, chúng có thể thay đổi vị trí của chúng mà không ảnh hưởng đến kết quả cuối cùng. Bằng cách này, chúng tôi có thể giảm nhiều hơn nữa, như ví dụ bên dưới:

  // Đầu vào:
cho mảng = [10000, 10, 100, 1000, 1]
array.sort ((first, second) = & gt; first & gt; second? 1: -1)
// Tăng dần: Nếu đầu tiên & gt; thứ hai == true, sau đó thay đổi cái kia.
console.log (mảng)
 

Hãy xem rằng & gt; so sánh trước đó và trả về mặc định đã được thay đổi thành chỉ một so sánh: first & gt; thứ hai ? 1: -1 . Có nghĩa là nếu phép so sánh là true , nó sẽ trả về 1 ; nếu không, nó trả về -1 .

Chúng ta cần toán tử bậc ba ? first & gt; so sánh thứ hai chỉ cho kết quả true hoặc false . Nhưng như đã nói, phương thức .sort yêu cầu 1 , -1 hoặc 0 .

Đầu ra:

  // Đầu ra:
[1, 10, 100, 1000, 10000]
 

Và theo thứ tự giảm dần:

  // Đầu vào:
cho mảng = [10000, 10, 100, 1000, 1]
array.sort ((first, second) = & gt; first & lt; second? 1: -1)
// Giảm dần: Nếu đầu tiên & lt; thứ hai == true, sau đó thay đổi cái kia.
console.log (mảng)
 

Đầu ra:

  // Kết quả:
[10000, 1000, 100, 10, 1]
 

Một cách khác để làm điều tương tự là sử dụng toán tử bậc ba - cho phép trừ. Khi chúng tôi sử dụng array.sort ((first, second) = & gt; first & gt; second? 1: -1) , nếu first - second dẫn đến giá trị lớn hơn 0, sau đó sẽ là một chỉ số thay đổi lẫn nhau. Nếu thứ nhất - thứ hai dẫn đến giá trị nhỏ hơn 0, sẽ không có gì xảy ra và đối với các giá trị bằng nhau, phép so sánh sẽ trả về 0 .

Ví dụ:

  // Đầu vào:
cho mảng = [10000, 10, 100, 1000, 1]
console.log (array.sort ((first, second) = & gt; first - second))
 

Đầu ra:

  // Đầu ra:
[1, 10, 100, 1000, 10000]
 

Chúng ta có thể làm gì theo thứ tự giảm dần? Không, nó không thay đổi toán tử bậc ba - thành + bởi vì mỗi số dương cộng với một số dương khác dẫn đến giá trị lớn hơn 0. Nhưng chúng tôi có một giải pháp đơn giản cho điều này: đảo ngược first - second thành second - first .

Theo cách này, nếu thứ hai - thứ nhất dẫn đến giá trị lớn hơn 0, thì phương thức .sort sẽ thay đổi vị trí của chúng với nhau.

< p> Ví dụ:

  // Đầu vào:
cho mảng = [10000, 10, 100, 1000, 1]
console.log (array.sort ((first, second) = & gt; second - first))
 

Đầu ra:

  // Đầu ra:
[10000, 1000, 100, 10, 1]
 

Viết cho chúng tôi

Các bài viết trên DelftStack được viết bởi những người yêu thích phần mềm như bạn. Nếu bạn cũng muốn đóng góp cho DelftStack bằng cách viết các bài báo trả phí, bạn có thể xem trang viết cho chúng tôi .


Xem thêm những thông tin liên quan đến chủ đề javascript sắp xếp int mảng

LEETCODE 88 (JAVASCRIPT) | MERGE SORTED ARRAY

  • Tác giả: Andy Gala
  • Ngày đăng: 2021-04-27
  • Đánh giá: 4 ⭐ ( 7968 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Hey everyone. Check out this in-depth solution for leetcode 88.

Javascript - sắp xếp mảng dựa trên mảng khác

  • Tác giả: qastack.vn
  • Đánh giá: 5 ⭐ ( 1804 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Cái gì đó như: items = [ ['Anne', 'a'], ['Bob', 'b'], ['Henry', 'b'], ['Andrew', 'd'], ['Jason',…

Sắp Xếp Mảng Trong JavaScript

  • Tác giả: www.codehub.com.vn
  • Đánh giá: 3 ⭐ ( 5182 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Sắp Xếp Mảng
    ------------

    Phương thức **`sort()`** sắp xếp một mảng theo thứ tự abc:

    **Ví dụ sắp xếp một mảng đơn giản:**

    var fruits = ["Chuoi", "Cam", "Tao", "Xoai"];
    fruits.sort(); // Sắp xếp các phần tử trong mảng fruit...

Làm thế nào để sắp xếp một mảng các đối tượng trong JavaScript

  • Tác giả: viblo.asia
  • Đánh giá: 3 ⭐ ( 3541 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Giới thiệu Nếu bạn có một mảng các đối tượng cần sắp xếp theo một thứ tự nhất định, rất có thể bạn tìm đến một thư viện JavaScript. Tuy nhiên, trước khi thực hiện, hãy nhớ rằng bạn có thể thực hiện 1...

Sắp xếp Mảng trong JavaScript

  • Tác giả: hanoiict.edu.vn
  • Đánh giá: 4 ⭐ ( 5081 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài hướng dẫn tự học Javascript này, bạn sẽ tìm hiểu làm thế nào để sắp xếp các phần tử trong mảng với JavaScript.

Sắp xếp mảng trong JavaScript

  • Tác giả: completejavascript.com
  • Đánh giá: 5 ⭐ ( 2608 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Array sorting (sắp xếp mảng) là một bài toán vô cùng quen thuộc. Bài viết này sẽ tìm hiểu về một số cách để thực hiện sắp xếp mảng trong trong JavaScript

Sắp xếp phần tử trong mảng JavaScript (sort)

  • Tác giả: laptrinhcanban.com
  • Đánh giá: 4 ⭐ ( 1832 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bạn có biết sau khi tạo xong một mảng, bạn có thể tự do sắp xếp phần tử trong mảng JavaScript theo thứ tự tăng dần, giảm dần hoặc là theo một điều kiện tuỳ ý không? Hãy tìm hiểu cách sắp xếp phần tử t

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Danh sách Python .append () - Cách thêm một mục vào danh sách bằng Python - danh sách python thêm phần tử

By ads_php