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ụ:
[code language=”javascript”]var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.sort(); // Apple,Banana,Mango,Orange[/code] Try 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ụ:
[code language=”javascript”]var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.sort(); // Apple,Banana,Mango,Orange
fruits.reverse(); // Orange,Mango,Banana,Apple[/code]
Try 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ụ:
[code language=”javascript”]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,100[/code]
Try 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ụ:
[code language=”javascript”]var numbers = [40, 100, 1, 5, 25, 10];numbers.sort(function(a, b){return b – a}); // 100,40,25,10,5,1[/code] Try 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ụ:
[code language=”javascript”]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ất[/code]
Try it »
– Sắp xếp mảng giảm dần:
Ví dụ:
[code language=”javascript”]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ất[/code]
Try it »
30. Sắp xếp một mảng theo thứ tự ngẫu nhiên
Ví dụ:
[code language=”javascript”]var numbers = [40, 100, 1, 5, 25, 10];numbers.sort(function(a, b){return 0.5 – Math.random()});[/code] 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ụ:
[code language=”javascript”]var cars = [{brand:"Volvo", year:2016},
{brand:"Toyota", year:2001},
{brand:"BMW", year:2010}];[/code]
– 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
[code language=”javascript”]cars.sort(function(a, b){return a.year – b.year});// Kết quả:
// Toyota 2001
// BMW 2010
// Volvo 2016[/code]
Try 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
[code language=”javascript”]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 2016[/code]
Try it »