JavaScript

Một số phương thức thao tác với mảng JavaScript (Phần 4/4)

Một số phương thức thao tác với mảng JavaScript (Phần 4/4)
Được viết bởi Minh Hoàng

Series lập trình JavaScript, ngôn ngữ lập trình linh động, thực thi phía client.

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

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

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()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)

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

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

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)

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 »

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »