HomeLập trìnhJavaScriptSắp xếp theo...

Sắp xếp theo thứ tự bảng chữ cái trong JavaScript – Cách sắp xếp theo tên trong JS


Đô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ừ az). 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 sort() phương pháp trực tiếp hoặc với chức năng 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:

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

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 sort() phương pháp:

let sortedNames = names.sort();
console.log(sortedNames);

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

["Alex Doe","Elon Doe","John Doe","Peter Doe"]

Ghi chú: Trong tình huống khi 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ì sort() phương thức đặt chữ hoa trước chữ thường:

let names = ["John Doe", "alex Doe", "peter Doe", "Elon Doe"];
let sortedNames = names.sort();

console.log(sortedNames); // ["Elon Doe","John Doe","alex Doe","peter Doe"]

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 thêm  Ngăn xếp cuộc gọi JavaScript - Nó là gì và tại sao nó cần thiết

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 mỗi 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 users = [
  {
    name: "John Doe",
    age: 17
  },
  {
    name: "Elon Doe",
    age: 27
  },
  {
    name: "Alex Doe",
    age: 14
  }
];

Nhìn vào đối tượng ở trên, phương pháp trước đó mà chúng ta vừa áp dụng sort() trực tiếp 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 tôi sẽ sử dụng sort() 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:

function(a, b){return a - b}

Khi chúng ta chuyển chức năng so sánh này vào sort() phương thức này, nó 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 tính, a được sắp xếp trước b.
  • Nếu kết quả dương tính, b được sắp xếp trước `a’.
  • Nếu kết quả là 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ị.
Đọc thêm  Phá hủy cấu trúc trong JavaScript – Cách phá hủy cấu trúc mảng và đối tượng

Sử dụng ví dụ trên, bây giờ chúng ta có thể sử dụng sort() phương pháp cùng với chức năng so sánh theo cách này:

users.sort(function (a, b) {
  if (a.name < b.name) {
    return -1;
  }
  if (a.name > b.name) {
    return 1;
  }
  return 0;
});

console.log(users);

Đoạn mã trên so sánh từng tên. Nếu lớn hơn, nó trả về 1. Nếu nhỏ hơn, nó trả về -1. Mặt khác, nó trả về 0. Giá trị được trả về được sử dụng để sắp xếp thứ tự các giá trị của mảng theo thứ tự abc:

[
  {
    name: "Alex Doe",
    age: 14
  },
  {
    name: "Elon Doe",
    age: 27
  },
  {
    name: "John Doe",
    age: 17
  }
]

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 các chữ hoa trước chữ thường:

let users = [
  {
    name: "alex Doe",
    age: 14
  },
  {
    name: "Elon Doe",
    age: 27
  },
  {
    name: "John Doe",
    age: 17
  }
];
    
users.sort(function (a, b) {
  if (a.name < b.name) {
    return -1;
  }
  if (a.name > b.name) {
    return 1;
  }
  return 0;
});

console.log(users);

Đầu ra:

[
  {
    name: "Elon Doe",
    age: 27
  },
  {
    name: "John Doe",
    age: 17
  },
  {
    name: "alex Doe",
    age: 14
  }
]

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 sort() phương pháp 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 cách viết hoa cụ thể trước khi sử dụng sort() phương pháp.

Đọc thêm  Ví dụ về JavaScript toString – Cách chuyển đổi một số thành một chuỗi trong JS và hơn thế nữa

Chúc mừng mã hóa!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status