Hướng dẫn sort trong javascript
Trong bài này chúng ta sẽ tìm hiểu hàm sort trong javascript, đây là hàm dùng để sắp xếp các phần tử trong chính mảng đó, đồng thời sẽ kết quả đã sắp xếp đó vào một mảng mới. Show
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Thứ tự sắp xếp mặc định được tính là tăng dần. Tuy nhiên, bạn có thể can thiệp vào quá trình sắp xếp bằng cách truyền vào nó một hàm callback. Trước khi đi vào học cú pháp thì hãy xem ví dụ dưới đây. array.sort() const months = ['March', 'Jan', 'Feb', 'Dec']; months.sort(); console.log(months); // output: Array ["Dec", "Feb", "Jan", "March"] const array1 = [1, 30, 4, 21, 100000]; array1.sort(); console.log(array1); // output: Array [1, 100000, 21, 30, 4] 1. Hàm sort trong javascript là gì?Hàm sort là một method thuộc đối tượng array trong javascript, được đùng dể sắp xếp các phần tử trong mảng tăng dần hoặc giảm dần theo số thứ tự trong bảng mã ascii, hoặc theo quy tắc trong callback function.
Cú pháp sort javascript như sau: Bài viết này được đăng tại [free tuts .net] // Functionless array.sort() // Arrow function array.sort((firstEl, secondEl) => { ... } ) // Compare function array.sort(compareFn) // Inline compare function array.sort(function compareFn(firstEl, secondEl) { ... }) Trong đó:
2. Các ví dụ hàm array sort trong javascriptVí dụ 1: Trường hợp sắp xếp với chuỗi. const fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Apple,Banana,Mango,Orange Ví dụ 2: Trường hợp sắp xếp với số. var score = [700, 8, 9, 10, 3]; console.log(score.sort()); // Keets Kết quả: [10, 3, 700, 8, 9] Như bạn thấy, kết quả trả về là sai, bởi hàm sort nó hiểu giữa hai số 3 và 10 thì 3 lớn hơn 1, vì vậy 3 sẽ đứng sau 10. Để khắc phục thì ta sẽ sử dụng callback function như sau: var score = [700, 8, 9, 10, 3]; console.log(score.sort( (firstEl, secondEl) => { if (secondEl > firstEl){ return -1; } else { return 0; } } )); // Kết quả: [3, 8, 9, 10, 700] Ví dụ 3: Sử dụng hàm sort để so sánh một mảng với các phần tử là các chuỗi. Ví dụ 4: Sử dụng tham số compareFn. Như vậy là mình đã hướng dẫn xong cách sử dụng hàm sort trong javascript để sắp xếp mảng tăng dần trong javascript. Hẹn gặp lại các bạn ở các bài tiêp theo nhé.
Trong bài viết này, chúng ta sẽ tìm hiểu 5 mẹo khi sử dụng hàm sort() trong JavaScript. Hy vọng bạn sẽ thấy chúng hữu dụng. Mảng JavaScript là một tập hợp có thứ tự các phần tử và nó có thể chứa bất kỳ loại dữ liệu nào. Mảng được tạo bằng dấu ngoặc vuông […] và cho phép các phần tử trùng lặp. Trong JavaScript, chúng ta có thể sắp xếp các phần tử của một mảng bằng hàm tích hợp có sẵn được gọi là sort(). 1. Hàm sort() cho kiểu chuỗiHàm sort() sắp xếp các phần tử của mảng và trả về mảng đã sắp xếp.
Kết quả:
Lưu ý rằng hàm sort() thực sự thay đổi mảng ban đầu và mảng sau khi sắp xếp.
Và điều quan trọng bạn phải nhớ là: “Với hàm sort(), thứ tự sắp xếp mặc định là tăng dần và các phần tử được chuyển thành chuỗi. Do đó, phương thức sort() mặc định không được sử dụng nếu kiểu dữ liệu của các phần tử khác nhau”. Sắp xếp theo thứ tự giảm dầnHàm sort() mặc định sắp xếp theo thứ tự tăng dần. Làm thế nào để sắp xếp theo thứ tự giảm dần? Hãy sử dụng hàm so sánh. Hàm so sánh giúp các phần tử sắp xếp theo thứ tự theo giá trị trả về của nó:
Hàm so sánh trên giúp so sánh từng phần tử trong mảng để thực hiện sắp xếp giảm dần. Tất nhiên, cùng một hàm có thể được viết theo cách đơn giản hơn nhiều,
Vì vậy, bây giờ, chúng ta hãy sắp xếp mảng artists theo thứ tự giảm dần.
Kết quả:
Sắp xếp số
Kết quả:
Kỳ lạ phải không? Đúng vì với sort() mặc định, các phần tử được chuyển đổi thành chuỗi và được so sánh theo thứ tự đơn vị mã UTF-16. Do đó, ’12’ được chuyển đổi đứng trước ‘2’ được chuyển đổi.
Lưu ý, hàm so sánh được truyền cho hàm sort(). Hàm so sánh trừ a khỏi b và kết quả sẽ là số dương, số âm hoặc 0. Nếu bạn đang sử dụng ES6, bạn có thể viết nó bằng cách sử dụng hàm mũi tên như sau:
Kết quả:
Sắp xếp số giảm dần là một thay đổi dễ dàng, thay vì a-b, hãy trả về b-a từ hàm so sánh.
Kết quả:
2. Array.reverse() với sắp xếpArray.reverse() là một hàm hữu ích khác để sắp xếp thứ tự các phần tử theo cách ngược lại.
Kết quả:
Như bạn thấy, các phần tử của mảng bây giờ đang theo thứ tự ngược lại. Điều này là tốt nhưng chúng ta thường sử dụng phương thức reverse() để sắp xếp.
Kết quả:
Nó hoạt động nhưng có thể dẫn đến một kết quả không mong muốn vì hàm reverse() không dùng để sắp xếp thứ tự, nó chỉ dùng để đảo ngược. 3. Sắp xếp ký tự không phải ASCII dễ dàngTrong ứng dụng của bạn, bạn có thể gặp các chuỗi không phải tiếng Anh và được biểu diễn bằng các ký tự không phải ASCII. Sử dụng phương thức string localeCompare() trong hàm so sánh của bạn để sắp xếp chúng.
Kết quả:
4. Sắp xếp một mảng đối tượng theo kiểu giá trịTrong JavaScript, các đối tượng được sử dụng để lưu trữ nhiều giá trị như một cấu trúc dữ liệu phức tạp. Một đối tượng được tạo bằng dấu ngoặc nhọn {…} và danh sách các thuộc tính. Thuộc tính là một cặp khóa-giá trị trong đó khóa phải là một chuỗi và giá trị có thể thuộc bất kỳ loại nào. Sắp xếp một đối tượng chủ yếu là sắp xếp dựa trên các giá trị thuộc tính. Vì các giá trị có thể thuộc bất kỳ loại nào, hãy để chúng tôi hiểu các cách sắp xếp khác nhau với các ví dụ, Một đối tượng user:
Sắp xếp theo tênSử dụng hàm so sánh để so sánh tên của từng đối tượng trong mảng.
Kết quả: Bạn biết đấy, phải làm gì để sắp xếp giảm dần, phải không? Vâng, một chút thay đổi trong chức năng so sánh như được hiển thị trước đó. Sắp xếp theo lươngGiá trị thu nhập là những con số. Chúng tôi biết phải làm gì ở đây. Chúng ta sẽ so sánh giá trị thu nhập của các đối tượng.
Kết quả: Sắp xếp theo ngày sinh (dob)Người dùng có ngày sinh (thuộc tính dob) là một chuỗi. Chà, chúng ta không thể sắp xếp chúng như chuỗi, phải không? Chúng ta cần sắp xếp chúng giống như ngày tháng.
Kết quả: 5. Bạn cần phân loại không phân biệt chữ hoa chữ thườngBạn có thể phải xử lý các phần tử mảng của các trường hợp khác nhau (lớn và nhỏ). Hàm sort() mặc định có thể không hữu ích. Đây là một mảng với các phần tử của các trường hợp hỗn hợp.
Kết quả:
Kết quả trên thực sự đúng khi so sánh xảy ra theo thứ tự đơn vị mã UTF-16. Tuy nhiên, bạn có thể muốn nó theo thứ tự sau.
Sử dụng hàm so sánh và so sánh các phần tử với toUpperCase() để so sánh không phân biệt chữ hoa chữ thường.
Kết quả:
Kết luậnCó một số điểm lưu ý khi sử dụng hàm sort() trong JavaScript:
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây. Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.
|