Sắp xếp mảng JavaScript
- Trang trước Tìm kiếm mảng JS
- Trang tiếp theo Iterate JS mảng
sort()
Phương pháp này là một trong những phương pháp mạnh mẽ nhất của mảng.
Sắp xếp mảng
sort()
Phương pháp sắp xếp mảng theo thứ tự alphabet:
Mô hình
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sắp xếp phần tử trong fruits
Đảo ngược mảng
reverse()
Phương pháp này sẽ đảo ngược phần tử trong mảng.
Bạn có thể sử dụng nó để sắp xếp mảng theo thứ tự giảm dần:
Mô hình
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Sắp xếp phần tử trong fruits fruits.reverse(); // Đảo ngược thứ tự phần tử
Sắp xếp số
Mặc địnhsort()
Hàm sắp xếp theochuỗithứ tự để sắp xếp giá trị.
Hàm này rất phù hợp với chuỗi ("Apple" sẽ đứng trước "Banana").
Mặc dù vậy, nếu số theo thứ tự chuỗi, "25" lớn hơn "100" vì "2" lớn hơn "1".
Vì vậysort()
Phương pháp này sẽ tạo ra kết quả không chính xác khi sắp xếp số liệu.
Chúng ta thông qua mộtHàm so sánh比值Để sửa lỗi này:
Mô hình
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Sử dụng kỹ thuật tương tự để sắp xếp mảng theo thứ tự giảm dần:
Mô hình
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a});
Hàm so sánh比值
Mục đích của hàm so sánh là định nghĩa thứ tự sắp xếp khác.
Hàm so sánh nên trả về một giá trị âm, bằng hoặc dương, tùy thuộc vào tham số:
function(a, b){return a-b}
Khi sort()
Khi hàm so sánh hai giá trị, nó sẽ gửi giá trị đến hàm so sánh và sắp xếp các giá trị dựa trên giá trị trả về (âm, bằng hoặc dương).
Ví dụ:
Khi so sánh 40 và 100 khisort()
Phương pháp sẽ gọi hàm so sánh function(40,100).
Hàm này tính toán 40-100, sau đó trả về -60 (giá trị âm).
Hàm sắp xếp sẽ sắp xếp 40 thành giá trị thấp hơn 100.
Bạn có thể sử dụng đoạn mã sau để kiểm tra việc sắp xếp số và chữ cái:
<button onclick="myFunction1()">Sắp xếp theo thứ tự chữ cái</button> <button onclick="myFunction2()">Sắp xếp theo thứ tự số</button> <p id="demo"></p> <script> var points = [40, 100, 1, 5, 25, 10]; document.getElementById("demo").innerHTML = points; function myFunction1() { points.sort(); document.getElementById("demo").innerHTML = points; } function myFunction2() { points.sort(function(a, b){return a - b}); document.getElementById("demo").innerHTML = points; } </script>
sắp xếp mảng theo thứ tự ngẫu nhiên
Mô hình
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return 0.5 - Math.random()});
Tìm giá trị lớn nhất (hoặc thấp nhất) của mảng
JavaScript không cung cấp hàm trong xây dựng để tìm giá trị lớn nhất hoặc nhỏ nhất trong mảng.
Tuy nhiên, sau khi sắp xếp mảng, bạn có thể sử dụng chỉ số để lấy giá trị cao nhất hoặc thấp nhất.
sắp xếp tăng dần:
Mô hình
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b}); // bây giờ points[0] chứa giá trị thấp nhất // mà points[points.length-1] chứa giá trị cao nhất
sắp xếp giảm dần:
Mô hình
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return b - a}); // bây giờ points[0] chứa giá trị cao nhất // mà points[points.length-1] chứa giá trị thấp nhất
Nếu bạn chỉ cần tìm giá trị cao nhất hoặc thấp nhất, việc sắp xếp toàn bộ mảng là phương pháp rất kém hiệu quả.
sử dụng Math.max() cho mảng
Bạn có thể sử dụng Math.max.apply
để tìm giá trị cao nhất trong mảng:
Mô hình
function myArrayMax(arr) { return Math.max.apply(null, arr); }
Math.max.apply([1, 2, 3])
bằng Math.max(1, 2, 3)
.
sử dụng Math.min() cho mảng
Bạn có thể sử dụng Math.min.apply
để tìm giá trị thấp nhất trong mảng:
Mô hình
function myArrayMin(arr) { return Math.min.apply(null, arr); }
Math.min.apply([1, 2, 3])
bằng Math.min(1, 2, 3)
.
các phương pháp Min / Max JavaScript của tôi
phương pháp giải quyết nhanh nhất là sử dụng phương pháp "tự làm".
hàm này sẽ duyệt qua mảng, so sánh giá trị cao nhất mà nó tìm thấy với mỗi giá trị:
thực hành (tìm Max)
function myArrayMax(arr) { var len = arr.length var max = -Infinity; while (len--) { if (arr[len] > max) { max = arr[len]; } } return max; }
hàm này sẽ duyệt qua mảng, so sánh giá trị thấp nhất mà nó tìm thấy với mỗi giá trị:
thực hành (tìm Min)
function myArrayMin(arr) { var len = arr.length var min = Infinity; while (len--) { if (arr[len] < min) { min = arr[len]; } } return min; }
Sắp xếp mảng đối tượng
JavaScript mảng thường chứa các đối tượng:
Mô hình
var cars = [ {type:"Volvo", year:2016}, {type:"Saab", year:2001}, {type:"BMW", year:2010}];
Dù đối tượng có thuộc tính dữ liệu loại khác nhausort()
Cách này vẫn có thể được sử dụng để sắp xếp mảng.
Giải pháp là thông qua hàm so sánh để so sánh giá trị thuộc tính:
Mô hình
cars.sort(function(a, b){return a.year - b.year});
So sánh thuộc tính chuỗi sẽ phức tạp hơn:
Mô hình
cars.sort(function(a, b){ var x = a.type.toLowerCase(); var y = b.type.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; });
- Trang trước Tìm kiếm mảng JS
- Trang tiếp theo Iterate JS mảng