Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp các phần tử mảng trong Javascript


JavaScript có các hàm sẵn có khá mạnh để sắp xếp mảng. Theo mặc định, phương pháp sắp xếp sắp xếp các phần tử theo thứ tự bảng chữ cái. Ví dụ:

Ví dụ

let arr1 = ["Zebra", "Bear", "Tiger"];
arr1.sort();
console.log(arr1);

Đầu ra

Điều này sẽ cung cấp đầu ra -

[ 'Bear', 'Tiger', 'Zebra' ]

Bây giờ chúng ta hãy xem xét một ví dụ int,

Ví dụ

let arr1 = [1, 8, 31, 21];
arr1.sort();
console.log(arr1);

Đầu ra

Điều này sẽ cung cấp đầu ra -

[ 1, 21, 31, 8 ]

Đây không phải là những gì chúng tôi mong đợi. Điều này đang được xuất ra vì theo mặc định, phương pháp sắp xếp sắp xếp các phần tử theo thứ tự bảng chữ cái. Để sắp xếp theo ý muốn của chúng ta, chúng ta cần cung cấp cho nó một hàm so sánh mà nó sẽ áp dụng 2 đối số để xác định cái nào lớn hơn và cái nào nhỏ hơn và sắp xếp cho phù hợp. Vì vậy, để sắp xếp một mảng số nguyên, bạn nên gọi -

Ví dụ

let arr1 = [1, 8, 31, 21];
arr1.sort((a, b) => a - b);
console.log(arr1);

Đầu ra

Điều này sẽ đưa ra kết quả &, trừ đi;

[ 1, 8, 21, 31 ]

Điều này cũng có thể được sử dụng để cung cấp khóa nào nên được sử dụng để sắp xếp trong các trường hợp phức tạp hơn như sắp xếp mảng đối tượng. Ví dụ:

Ví dụ

let people = [{
   name: "Zoe",
   age: 35
}, {
   name: "Richard",
   age: 21
}, {
   name: "Agnes",
   age: 25
}];
people.sort((a, b) => {
   let nameA = a.name.toUpperCase(); // ignore upper and lowercase
   let nameB = b.name.toUpperCase(); // ignore upper and lowercase
   if (nameA < nameB) {
      return -1;
   }
   if (nameA > nameB) {
      return 1;
   } // names must be equal
   return 0;
}) console.log(people)

Đầu ra

Điều này sẽ cung cấp đầu ra -

[ { name: 'Agnes', age: 25 },
{ name: 'Richard', age: 21 },
{ name: 'Zoe', age: 35 } ]

Các đối tượng phức tạp hơn nhiều cũng có thể được sắp xếp theo cách này. Tất cả là về cách bạn cấu trúc hàm so sánh của mình.

Như bạn đã thấy rằng hàm này sắp xếp mảng tại chỗ. Để trả về một mảng được sắp xếp mới trong khi vẫn giữ nguyên thứ tự trong mảng này, bạn có thể sử dụng cách sau để tạo một bản sao trước tiên, sau đó áp dụng sắp xếp.

đầu ra

arr.slice(0).sort();