Truyền chức năng để sắp xếp JavaScript

Trong JavaScript, phương thức

let numbers = [33, 16, 156, 2, 9, 5, 10];

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ần

Phương thức

let numbers = [33, 16, 156, 2, 9, 5, 10];

2 cho phép truyền hàm so sánh để thay đổi thứ tự sắp xếp

// 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]
  • let numbers = [33, 16, 156, 2, 9, 5, 10];

    4 là chức năng so sánh tùy chọn
  • let numbers = [33, 16, 156, 2, 9, 5, 10];

    5 là mục mảng đầu tiên được so sánh
  • let numbers = [33, 16, 156, 2, 9, 5, 10];

    6 là mục mảng thứ hai được so sánh

Nếu không cung cấp hàm so sánh, phương thức

let numbers = [33, 16, 156, 2, 9, 5, 10];

2 sẽ sắp xếp mảng theo thứ tự chuỗi tăng dần

Đối với các mục không phải là chuỗi,

let numbers = [33, 16, 156, 2, 9, 5, 10];

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ốn

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

let numbers = [33, 16, 156, 2, 9, 5, 10];

0 được sắp xếp đến cuối mảng và không có mục

let numbers = [33, 16, 156, 2, 9, 5, 10];

0 nào được chuyển đến hàm so sánh

Hàm so sánh xác định thứ tự sắp xếp như sau

Đối với chức năng

let numbers = [33, 16, 156, 2, 9, 5, 10];

3

  • Nếu hàm trả về một giá trị lớn hơn 0, hãy sắp xếp

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    6 trước

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    5
  • Nếu hàm trả về một giá trị nhỏ hơn 0, hãy sắp xếp

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    5 trước

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    6
  • Nếu hàm trả về giá trị bằng 0 thì vị trí của

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    5 và

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    6 không thay đổi
  • 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

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    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 định

Để 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

let numbers = [33, 16, 156, 2, 9, 5, 10];

numbers.sort[function compareFn[A, B] {

2 hoặc

let numbers = [33, 16, 156, 2, 9, 5, 10];

numbers.sort[function compareFn[A, B] {

3

Đô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

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
1 hoặc bằng hàm so sánh

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

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
1

let numbers = [33, 16, 156, 2, 9, 5, 10];

2

Đ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

let numbers = [33, 16, 156, 2, 9, 5, 10];

3

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

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
1 đặt chữ hoa trước chữ thường

let numbers = [33, 16, 156, 2, 9, 5, 10];

5

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ụ

let numbers = [33, 16, 156, 2, 9, 5, 10];

6

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

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
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ốn

Chúng ta sẽ 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 để sắp xếp mảng người dùng này theo tên

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

let numbers = [33, 16, 156, 2, 9, 5, 10];

9

Khi chúng ta chuyển hàm so sánh này vào phương thức

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
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]

  • Nếu kết quả là âm,
    let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
    
    7 được sắp xếp trước
    let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
    
    8
  • Nếu kết quả là dương,
    let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
    
    8 được sắp xếp trước `a'
  • Nếu kết quả là

    let numbers = [33, 16, 156, 2, 9, 5, 10];

    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ị

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

let numbers = [33, 16, 156, 2, 9, 5, 10];

6

Đ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

let numbers = [33, 16, 156, 2, 9, 5, 10];

7

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

let numbers = [33, 16, 156, 2, 9, 5, 10];

8

đầu ra

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
0

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

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
1 trong hai tình huống có thể xảy ra

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

let names  = ["John Doe", "Alex Doe", "Peter Doe", "Elon Doe"];
1

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;

Chủ Đề