Phân loại các mảng JavaScript - Fedu

CHÀO MỪNG BẠN ĐẾN VỚI THƯ VIỆN HỌC TẬP & ĐÀO TẠO CƠ BẢN

Phân loại các mảng JavaScript

JavaScript

Hướng dẫn JavaScript

Biểu mẫu JavaScript

Đối tượng JavaScript

Hàm JavaScript

DOM JavaScript

Trình duyệt BOM

JavaScript Ajax

JavaScript Json

Phương thức sort() là một trong những phương thức mảng mạnh nhất.

Phân loại một mảng

Phương thức sort() sắp xếp một mảng theo thứ tự bảng chữ cái:

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
fruits.sort();            // Sorts the elements of fruits

Đảo ngược mảng

Phương thức reverse() đảo ngược các phần tử trong một mảng. Bạn có thể sử dụng nó để sắp xếp một mảng theo thứ tự giảm dần:

var fruits = [“Banana”, “Orange”, “Apple”, “Mango”];
fruits.sort();            // Sorts the elements of fruits
fruits.reverse();         // Reverses the order of the elements

Phân loại Số

Theo mặc định, hàm sort() sắp xếp các giá trị như các chuỗi. Điều này hoạt động tốt cho dây (“Apple” trước khi “Banana”). Tuy nhiên, nếu số được sắp xếp theo chuỗi, “25” lớn hơn “100”, bởi vì “2” lớn hơn “1”.

Do đó, phương thức sort() sẽ tạo ra kết quả không chính xác khi phân loại số. Bạn có thể sửa lỗi này bằng cách cung cấp chức năng so sánh:

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a – b});

Sử dụng cùng một mẹo để sắp xếp một mảng giảm dần:

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à xác định thứ tự sắp xếp thay thế. Hàm so sánh nên trả lại giá trị âm, 0, hoặc dương, tùy thuộc vào các đối số:

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

Khi hàm sort() so sánh hai giá trị, nó sẽ gửi các giá trị đến hàm so sánh và sắp xếp các giá trị theo giá trị trả về (âm, 0, dương).

Ví dụ:

Khi so sánh 40 và 100, phương thức sort() gọi hàm so sánh (40,100). Hàm sort sẽ sắp xếp 40 như một giá trị nhỏ hơn 100. Bạn có thể sử dụng đoạn mã này để thử nghiệm với số liệu và sắp xếp theo bảng chữ cái:

<button onclick=”myFunction1()”>Sort Alphabetically</button>
<button onclick=”myFunction2()”>Sort Numerically</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>

Phân loại một mảng theo thứ tự ngẫu nhiên

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 – Math.random()});

Tìm giá trị mảng lớn nhất (hoặc thấp nhất)

Không có hàm nào được tích hợp để tìm giá trị cực đại hoặc cực tiểu trong một mảng. Tuy nhiên, sau khi bạn đã sắp xếp một mảng, bạn có thể sử dụng chỉ mục để có được giá trị cao nhất và thấp nhất.

Sắp xếp tăng dần:

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a – b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

Sắp xếp giảm dần:

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b – a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

Sắp xếp toàn bộ mảng là một phương pháp không hiệu quả nếu bạn chỉ muốn tìm giá trị cao nhất (hoặc thấp nhất).

Sử dụng Math.max() trong mảng

Bạn có thể sử dụng Math.max.apply để tìm số lượng cao nhất trong một mảng:

function myArrayMax(arr) {
return Math.max.apply(null, arr);
}

Math.max.apply ([1, 2, 3]) tương đương với Math.max (1, 2, 3).

Sử dụng Math.min() trong mảng

Bạn có thể sử dụng Math.min.apply để tìm số thấp nhất trong một mảng:

function myArrayMin(arr) {
return Math.min.apply(null, arr);
}

Math.min.apply ([1, 2, 3]) tương đương với Math.min (1, 2, 3).

Các phương thức JavaScript Min / Max

Giải pháp nhanh nhất là sử dụng phươngthức “làm tại nhà”. Hàm này lướt qua một mảng so sánh mỗi giá trị với giá trị cao nhất được tìm thấy:

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 lướt qua một mảng so sánh mỗi giá trị với giá trị thấp nhất được tìm thấy:

function myArrayMin(arr) {
var len = arr.length
var min = Infinity;
while (len–) {
if (arr[len] < min) {
min = arr[len];
}
}
return min;
}

Phân loại các đối tượng mảng

Mảng JavaScript thường chứa các đối tượng:

var cars = [
{type:”Volvo”, year:2016},
{type:”Saab”, year:2001},
{type:”BMW”, year:2010}];

Ngay cả khi các đối tượng có thuộc tính của các kiểu dữ liệu khác nhau, thì phương thức sort() có thể được sử dụng để sắp xếp mảng. Giải pháp là viết một hàm so sánh để so sánh giá trị thuộc tính:

cars.sort(function(a, b){return a.year – b.year});

So sánh thuộc tính chuỗi là một chút phức tạp hơn:

 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;
});