Một số phương thức thao tác với mảng JavaScript (Phần 4/4)
26. Array.sort() Sắp xếp một mảng theo thứ tự abc
Ví dụ:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Apple,Banana,Mango,OrangeTry it »
27. Array.reverse() Đảo ngược các phần tử trong một mảng
Bằng cách kết hợp sort() và reverse(), bạn có thể sắp xếp một mảng theo thứ tự giảm dần:
Ví dụ:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // Apple,Banana,Mango,Orange fruits.reverse(); // Orange,Mango,Banana,AppleTry it »
28. Cách sắp xếp một mảng là các giá trị số (numberic)
– Theo mặc định, hàm sort() sắp xếp các giá trị dưới dạng chuỗi (strings).
– Điều này hoạt động tốt cho các chuỗi (strings) (“Apple” xuất hiện trước “Banana”).
– Tuy nhiên, nếu các số (numbers) được sắp xếp dưới dạng chuỗi (strings), thì “25” sẽ lớn hơn “100”, bởi vì “2” lớn hơn “1”.
– Bởi vì điều này, phương thức sort() sẽ tạo ra kết quả không chính xác khi sắp xếp các số (numbers).
– Bạn có thể sửa lỗi này bằng cách cung cấp một hàm so sánh:
Ví dụ:
var numbers = [40, 100, 1, 5, 25, 10]; numbers.sort(); // 1,10,100,25,40,5 numbers.sort(function(a, b){return a - b}); // 1,5,10,25,40,100Try it »
– Và sửa lại hàm so sánh một chút, chúng ta sẽ sắp xếp một mảng số giảm dần:
Ví dụ:
var numbers = [40, 100, 1, 5, 25, 10]; numbers.sort(function(a, b){return b - a}); // 100,40,25,10,5,1Try it »
29. Tìm giá trị nhỏ nhất hoặc lớn nhất trong mảng
– JavaScript không có hàm xây dựng sẵn (built-in function) để tìm giá trị nhỏ nhất hoặc lớn nhất trong 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ị nhỏ nhất hoặc lớn nhất.
– Sắp xếp mảng tăng dần:
Ví dụ:
var numbers = [40, 100, 5, -8, 25, 10]; numbers.sort(function(a, b){return a - b}); // Bây giờ: // numbers[0] là giá trị nhỏ nhất, và // numbers[numbers.length-1] chứa giá trị lớn nhấtTry it »
– Sắp xếp mảng giảm dần:
Ví dụ:
var numbers = [40, 100, 5, -8, 25, 10]; numbers.sort(function(a, b){return b-a}); // Bây giờ: // numbers[0] là giá trị lớn nhất, và // numbers[numbers.length-1] chứa giá trị nhỏ nhấtTry it »
30. Sắp xếp một mảng theo thứ tự ngẫu nhiên
Ví dụ:
var numbers = [40, 100, 1, 5, 25, 10]; numbers.sort(function(a, b){return 0.5 - Math.random()});Try it »
31. Sắp xếp một mảng đối tượng (Object Array)
– Các mảng JavaScript thường chứa các đối tượng:
Ví dụ:
var cars = [ {brand:"Volvo", year:2016}, {brand:"Toyota", year:2001}, {brand:"BMW", year:2010}];
– Bạn có thể sắp xếp mảng bằng cách sử dụng phương thức sort(), ngay cả khi đối tượng có các thuộc tính (properties) của các kiểu dữ liệu khác nhau.
– Khi đó, chúng ta sẽ viết một hàm so sánh (compare function) để so sánh các giá trị thuộc tính:
Ví dụ: Sort tăng dần, so sánh theo year
cars.sort(function(a, b){return a.year - b.year}); // Kết quả: // Toyota 2001 // BMW 2010 // Volvo 2016Try it »
– So sánh các thuộc tính chuỗi (string properties) phức tạp hơn một chút:
Ví dụ: Sort tăng dần, so sánh theo brand
var cars = [ {brand:"Volvo", year:2016}, {brand:"Toyota1", year:2018}, {brand:"BMW", year:2010}, {brand:"Toyota2", year:2001}]; cars.sort(function(a, b){ var x = a.brand.toLowerCase(); var y = b.brand.toLowerCase(); if (x < y) {return -1;} if (x > y) {return 1;} return 0; }); // Kết quả: // BMW 2010 // Toyota1 2018 // Toyota2 2001 // Volvo 2016Try it »