07/09/2018, 14:46

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

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”]; ...

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

Tham khảo thêm các khóa học lập trình web từ Front-end đến Back-end do trực tiếp giảng viên quốc tế trường FPT Arena giảng dạy giúp bạn thành thạo kỹ năng lập trình web từ CƠ BẢN – NÂNG CAO với giá chỉ từ 290,000đ:
  • Học lập trình front-end cơ bản với bootstrap 4/html5/css3
  • Học lập trình front-end nâng cao qua Project thực tế
  • Học thiết kế web với Photoshop, CSS theo kiểu SASS
  • Học cách sử dụng Git_hub cho lập trình viên
  • Học lập trình Back-end PHP theo mô hình MVC cơ bản
  • Học lập trình Back-end PHP theo mô hình MVC nâng cao
  • Học lập trình Cơ sở dữ liệu với AngularJS
  • Học lập trình theme wordpress. Làm ra mọi website hoàn chỉnh với wordpress
  • Combo lập trình front-end từ cơ bản – nâng cao
  • Combo lập trình back-end từ cơ bản đến nâng cao
  • Combo lập trình web với word press từ A-Z
0