Hàm array.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.
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.
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.
- Mặc định các phần tử sẽ được sắp xếp theo bảng chữ cái với thứ tự tăng dần, điều này khiến phương thức sort sẽ sắp xếp các chuỗi rất chính xác. Tuy nhiên, khi sắp xếp các số sẽ không được chính xác (ví dụ 20 và 100 thì 20 sẽ lớn hơn 100 vì 2 > 1).
- Bạn có thể khắc phục điều này bằng việc truyền tham số là một mảng so sánh.
- Hàm sort sẽ làm thay đổi mảng ban đầu.
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 đó: compareFn
là tham số không bắt buộc. Đây là một callback function dùng để quyết định thứ tự sắp xếp của các phần tử trong mảng. Hai tham số firstEl
và secondEl
đại diện cho hai phần tử kề nhau trong mảng, và ta sẽ sử dụng nó để quyết định cách sắp xếp.
- Nếu hàm callback trả về số lớn hơn 0 thì
secondEl
sẽ đứng trướcfirstEl
. - Nếu hàm callback trả về số bé hơn hoặc bằng 0 thì thứ tự được giữ nguyên, tức là
firstEl
sẽ đứng trướcsecondEl
.
2. Các ví dụ hàm array sort trong javascript
Ví 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.
<button onclick="myFunction()">Run</button> <p id="demo"></p> <script> var subject = ["php", "javascript", "css", "html"]; document.getElementById("demo").innerHTML = subject; function myFunction() { subject.sort(); document.getElementById("demo").innerHTML = subject; } </script>
Ví dụ 4: Sử dụng tham số compareFn.
<button onclick="myFunction()">Run</button> <p id="demo"></p> <script> var subject = [4, 144, 25, 16]; document.getElementById("demo").innerHTML = subject; function compare(a, b) { return a - b; } function myFunction() { subject.sort(compare); document.getElementById("demo").innerHTML = subject; } </script>
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é.