TYPESCRIPT 2.X CĂN BẢN
Hàm trong TypeScript Sử dụng hàm generics Sử dụng hàm generics trong TypeScript Sử dụng Array trong TypeScript Sử dụng Tuple trong TypeScript Sử dụng kiểu Array, Tuple, Enum trong TypeScript Interface trong Typescript Hybrid Types với Interface trong TypeScript Khác biệt khi sử dụng 'type' và 'interface' trong TypeScript Cách dùng Enum trong TypeScript Types và interface trong TypeScript Class trong TypeScript Sử dụng Abstract Classes trong TypeScript Sử dụng Interface trong Typescript (phần 2) Sử dụng Casting trong TypeScript Tìm hiểu về Generics trong TypeScript Tìm hiểu về utility types trong Typescript Utility types phổ biến trong Typescript Sử dụng default parameters trong TypeScript Modules trong TypeScript Rest Parameters trong TypeScript Sử dụng Function Overloadings trong TypeScript Sử dụng Type Assertions trong TypeScript Sử dụng Static Methods và Properties trong TypeScript. Sử dụng Access Modifiers trong TypeScript 10 mẹo và thủ thuật hay nhất trong TypeScript 5 Cách giúp bạn loại bỏ "any" trong TypeScript Mapped Types trong TypeScript Dependency Injection trong Typescript 5 ký hiệu khó hiểu cần biết trong TypeScript Cách sử dụng @ts-expect-error trong Typescript Declaration Merging trong TypeScript Tìm hiểu Branded Type trong TypeScript Namespaces trong Typescript Phân biệt Modules và Namespaces trong TypeScript Triple-Slash Directives trong TypeScript là gì? Phần 1: Biến trong TypeScript Phần 2: Biến trong TypeScript Property trong TypeScript Phân tích JSON trong TypeScript Bài tập TypeScript: Các dạng bài tập cơ bản Bài tập TypeScript: Lập trình Hướng đối tượng trong TypeScript Bài tập TypeScript: Kiểu Generic Types trong Typescript Bài tập TypeScript: Các kiểu dữ liệu mảng và tuple. Bài tập TypeScript: Classes và Inheritance trong Typescript Bài 01: TypeScript là gì? TypeScript và Javascript Bài 02: Cài đặt TypeScript Bài 03: TypeScript Basic Types Bài 04: Khai báo biến trong TypeScript Bài 05: Lệnh If Else và Switch Case trong TypeScript Bài 06: Vòng lặp trong TypeScript
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Sử dụng Array trong TypeScript

Trong bài viết này, mình sẽ tìm hiểu một khía cạnh quan trọng của TypeScript - việc sử dụng mảng. Mảng không chỉ là một thành phần của TypeScript, mà còn là một phần quan trọng của JavaScript, và nó đóng vai trò quan trọng trong quá trình phát triển ứng dụng TypeScript.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hãy bắt đầu với việc tìm hiểu tại sao TypeScript đã trở thành một ngôn ngữ phát triển ứng dụng web hàng đầu và sau đó, mình sẽ đi sâu vào tầm quan trọng của mảng trong phát triển ứng dụng TypeScript.

Mảng (Array) là gì?

Mảng (Array) là một cấu trúc dữ liệu trong lập trình được sử dụng để lưu trữ một tập hợp các giá trị có cùng kiểu dữ liệu trong một biến duy nhất. Các giá trị trong mảng được sắp xếp theo thứ tự và có thể truy cập thông qua chỉ mục (index) định.

Mảng cho phép bạn lưu trữ và quản lý nhiều dữ liệu dưới dạng một đối tượng duy nhất. Điều này rất hữu ích khi bạn cần làm việc với một danh sách các phần tử, như danh sách người dùng, danh sách sản phẩm, hoặc bất kỳ tập hợp dữ liệu cụ thể nào.

Bài viết này được đăng tại [free tuts .net]

Trong TypeScript và JavaScript, mảng có thể chứa nhiều kiểu dữ liệu khác nhau, bao gồm số (number), chuỗi (string), đối tượng (object), hoặc thậm chí là các mảng khác. Mảng giúp bạn tổ chức dữ liệu một cách hiệu quả và cung cấp nhiều phương thức để thực hiện các thao tác xử lý dữ liệu như thêm, xóa, sắp xếp, lọc, và tìm kiếm.

Ví dụ:

// Khai báo một mảng chứa các số nguyên
let mangSoNguyen: number[] = [1, 2, 3, 4, 5];

// Khai báo một mảng chứa các chuỗi
let mangChuoi: string[] = ["apple", "banana", "cherry"];

// Khai báo một mảng chứa các đối tượng
let mangDoiTuong: { ten: string, tuoi: number }[] = [
    { ten: "Alice", tuoi: 25 },
    { ten: "Bob", tuoi: 30 },
    { ten: "Charlie", tuoi: 35 }
];

Trong ví dụ trên, mình đã khai báo ba mảng khác nhau. mangSoNguyen chứa các số nguyên, mangChuoi chứa các chuỗi, và mangDoiTuong chứa các đối tượng có hai thuộc tính là ten và tuoi. Mỗi phần tử trong mảng được truy cập thông qua chỉ mục, ví dụ: mangSoNguyen[0] sẽ cho giá trị 1, mangChuoi[1] sẽ cho chuỗi "banana", và mangDoiTuong[2] sẽ trả về đối tượng thứ ba trong mảng mangDoiTuong.

Các phương thức của Array trong TypeScript

Mảng (Array) trong TypeScript cung cấp một loạt các phương thức và tính năng mạnh mẽ cho việc quản lý dữ liệu. Dưới đây là một số phương thức cơ bản và ví dụ cụ thể về cách sử dụng chúng:

Phương thức push()

Mục đích: Dùng để thêm một phần tử mới vào cuối mảng.

Ví dụ:

let danhSachSo: number[] = [1, 2, 3];
danhSachSo.push(4);
// Kết quả: danhSachSo = [1, 2, 3, 4]

Phương thức pop()

Mục đích: Dùng để loại bỏ phần tử cuối cùng của mảng và trả về giá trị đó.

Ví dụ:

let danhSachChuoi: string[] = ["apple", "banana", "cherry"];
let phanTuCuoi = danhSachChuoi.pop();
// Kết quả: phanTuCuoi = "cherry", danhSachChuoi = ["apple", "banana"]

Phương thức shift()

Mục đích: Dùng để loại bỏ phần tử đầu tiên của mảng và trả về giá trị đó.

Ví dụ:

let danhSachChuoi: string[] = ["apple", "banana", "cherry"];
let phanTuDauTien = danhSachChuoi.shift();
// Kết quả: phanTuDauTien = "apple", danhSachChuoi = ["banana", "cherry"]

Phương thức unshift()

Mục đích: Dùng để thêm một hoặc nhiều phần tử vào đầu mảng.

Ví dụ:

let danhSachSo: number[] = [3, 4, 5];
danhSachSo.unshift(1, 2);
// Kết quả: danhSachSo = [1, 2, 3, 4, 5]

Phương thức concat()

Mục đích: Dùng để kết hợp hai hoặc nhiều mảng thành một mảng mới.

Ví dụ:

let mang1: number[] = [1, 2];
let mang2: number[] = [3, 4];
let mangMoi = mang1.concat(mang2);
// Kết quả: mangMoi = [1, 2, 3, 4]

Phương thức slice()

Mục đích: Dùng để tạo một bản sao của mảng ban đầu, chứa các phần tử từ một vị trí bắt đầu đến một vị trí kết thúc (vị trí cuối không bao gồm).

Ví dụ:

let danhSachSo: number[] = [1, 2, 3, 4, 5];
let mangCon = danhSachSo.slice(1, 4);
// Kết quả: mangCon = [2, 3, 4]

Các phương thức trên giúp bạn thực hiện nhiều thao tác thường gặp trên mảng một cách dễ dàng. Bạn có thể tùy chỉnh việc sử dụng chúng để xử lý dữ liệu mảng theo nhu cầu của ứng dụng của mình.

Duyệt và xử lý mảng

Trong TypeScript, việc duyệt và xử lý mảng là một phần quan trọng của quá trình phát triển ứng dụng. Dưới đây, mình sẽ tìm hiểu cách duyệt qua các phần tử của mảng bằng cách sử dụng vòng lặp for, forEach, for...of, và giới thiệu cách sử dụng các phương thức bổ sung như map, filter, và reduce để xử lý mảng.

Duyệt qua các phần tử của mảng

Sử dụng vòng lặp for:

Ví dụ:

let danhSachSo: number[] = [1, 2, 3, 4, 5];
for (let i = 0; i < danhSachSo.length; i++) {
    console.log(danhSachSo[i]);
}

Sử dụng forEach

Phương thức forEach cho phép bạn duyệt qua từng phần tử của mảng và thực hiện một hàm cho mỗi phần tử.

Ví dụ:

let danhSachChuoi: string[] = ["apple", "banana", "cherry"];
danhSachChuoi.forEach(function(item) {
    console.log(item);
});

Sử dụng vòng lặp for...of

Vòng lặp for...of giúp duyệt qua các phần tử mảng một cách dễ dàng và tối ưu hơn.

Ví dụ:

let danhSachSo: number[] = [1, 2, 3, 4, 5];
for (let so of danhSachSo) {
    console.log(so);
}

Sử dụng phương thức map, filter, và reduce

Phương thức map

Phương thức map cho phép bạn tạo một mảng mới bằng cách áp dụng một hàm xử lý cho từng phần tử trong mảng gốc.

Ví dụ:

let soChan: number[] = [1, 2, 3, 4, 5];
let soBinhPhuong = soChan.map(function(so) {
    return so * so;
});
// Kết quả: soBinhPhuong = [1, 4, 9, 16, 25]

Phương thức filter

Phương thức filter cho phép bạn tạo một mảng mới chứa các phần tử thỏa điều kiện đã định.

Ví dụ:

let danhSachSo: number[] = [1, 2, 3, 4, 5];
let soChan = danhSachSo.filter(function(so) {
    return so % 2 === 0;
});
// Kết quả: soChan = [2, 4]

Phương thức reduce

Phương thức reduce giúp bạn thực hiện một phép gộp (reduce) lên tất cả các phần tử trong mảng để tạo ra một giá trị duy nhất.

Ví dụ:

let danhSachSo: number[] = [1, 2, 3, 4, 5];
let tong = danhSachSo.reduce(function(tong, so) {
    return tong + so;
}, 0);
// Kết quả: tong = 15

Các phương thức map, filter, và reduce giúp bạn xử lý mảng một cách linh hoạt và hiệu quả, cho phép bạn thực hiện các thao tác phức tạp trên dữ liệu mảng.

Mảng và TypeScript Generics

Trong TypeScript, TypeScript Generics cho phép bạn tạo mảng kiểu động (generic arrays) để đảm bảo tính toàn vẹn kiểu dữ liệu trong mã nguồn. Generic arrays cho phép bạn làm việc với các loại dữ liệu động trong mảng mà bạn không biết trước là kiểu dữ liệu gì.

Dưới đây là một ví dụ về cách sử dụng TypeScript Generics để tạo mảng kiểu động:

// Sử dụng TypeScript Generics để tạo mảng kiểu động
function taoMangDong<T>(mang: T[]): T[] {
    return mang;
}

// Sử dụng mảng kiểu động
let mangSo: number[] = taoMangDong([1, 2, 3, 4, 5]);
let mangChuoi: string[] = taoMangDong(["apple", "banana", "cherry"]);

console.log(mangSo); // Kết quả: [1, 2, 3, 4, 5]
console.log(mangChuoi); // Kết quả: ["apple", "banana", "cherry"]

Trong ví dụ này:

Mình sử dụng TypeScript Generics bằng cách sử dụng dấu <> sau tên hàm để định kiểu dữ liệu T. T ở đây là một biến kiểu dữ liệu tự đặt tên, và nó cho phép hàm taoMangDong làm việc với kiểu dữ liệu mà bạn truyền vào khi gọi hàm.

Hàm taoMangDong nhận một mảng mang kiểu T và trả về mảng kiểu T.

Ta sử dụng hàm taoMangDong để tạo mảng kiểu động mangSo và mangChuoi. Hàm này sẽ xác định kiểu dữ liệu dựa trên đối số truyền vào.

Cuối cùng, in ra các mảng mangSo mangChuoi, và TypeScript tự động xác định kiểu dữ liệu cho các mảng này dựa trên dữ liệu đã truyền vào hàm.

Sử dụng TypeScript Generics giúp đảm bảo tính toàn vẹn kiểu dữ liệu trong mã nguồn, giúp bạn làm việc với các mảng đa dạng và linh hoạt.

Sử dụng Array trong thực tế

Mảng là một công cụ quan trọng trong lập trình, và chúng có thể được sử dụng trong nhiều tình huống khác nhau. Dưới đây, mình sẽ mô tả cách sử dụng mảng trong các tình huống cụ thể như tìm kiếm, sắp xếp, và lọc dữ liệu, và cung cấp ví dụ minh họa cho mỗi tình huống.

Tìm kiếm phần tử trong mảng

Để tìm kiếm một phần tử cụ thể trong mảng, bạn có thể sử dụng vòng lặp for, forEach, hoặc phương thức find. Dưới đây là một ví dụ sử dụng find:

let danhSachNguoi: { ten: string, tuoi: number }[] = [
    { ten: "Alice", tuoi: 25 },
    { ten: "Bob", tuoi: 30 },
    { ten: "Charlie", tuoi: 35 }
];

let timNguoi = danhSachNguoi.find(function(nguoi) {
    return nguoi.ten === "Bob";
});

if (timNguoi) {
    console.log("Đã tìm thấy: " + timNguoi.ten);
} else {
    console.log("Không tìm thấy người nào có tên là Bob.");
}

Sắp xếp mảng

Để sắp xếp mảng, bạn có thể sử dụng phương thức sort. Dưới đây là một ví dụ sắp xếp mảng số theo thứ tự tăng dần:

let mangSo: number[] = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
mangSo.sort(function(a, b) {
    return a - b;
});

console.log("Mảng sau khi sắp xếp: " + mangSo); // Kết quả: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

Lọc dữ liệu từ mảng

Để lọc dữ liệu từ mảng, bạn có thể sử dụng phương thức filter. Dưới đây là một ví dụ lọc ra các số chẵn từ một mảng số:

let danhSachSo: number[] = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let soChan = danhSachSo.filter(function(so) {
    return so % 2 === 0;
});

console.log("Các số chẵn trong mảng: " + soChan); // Kết quả: [2, 4, 6, 8]

Mảng có thể được sử dụng trong nhiều tình huống khác nhau để thực hiện các nhiệm vụ khác nhau. Sử dụng phương thức và vòng lặp thích hợp sẽ giúp bạn xử lý dữ liệu mảng một cách hiệu quả.

Kết bài

Trên hết, mảng (Array) trong TypeScript không chỉ là một công cụ hữu ích, mà còn là một trợ thủ đáng tin cậy trong quá trình phát triển ứng dụng. Với tính linh hoạt và khả năng xử lý nhiều loại dữ liệu, mảng giúp mình xây dựng ứng dụng mạnh mẽ và hiệu quả.

Mình đã tìm hiểu các khía cạnh cơ bản của mảng, từ cách khai báo và sử dụng chúng đến việc tìm kiếm, sắp xếp và lọc dữ liệu. Mình cũng đã thấy cách TypeScript Generics có thể tạo ra mảng kiểu động, làm tăng tính toàn vẹn kiểu dữ liệu trong mã nguồn.

Chúng tôi rất mong rằng kiến thức trong bài viết này sẽ giúp bạn trở thành một lập trình viên xuất sắc hơn. Chúc bạn một ngày vui vẻ và thành công trong việc sáng tạo với TypeScript và mảng!

Cùng chuyên mục:

Bài tập TypeScript: Classes và Inheritance trong Typescript

Bài tập TypeScript: Classes và Inheritance trong Typescript

Bài tập TypeScript: Các kiểu dữ liệu mảng và tuple.

Bài tập TypeScript: Các kiểu dữ liệu mảng và tuple.

Bài tập TypeScript: Kiểu Generic Types trong Typescript

Bài tập TypeScript: Kiểu Generic Types trong Typescript

Bài tập TypeScript: Lập trình Hướng đối tượng trong TypeScript

Bài tập TypeScript: Lập trình Hướng đối tượng trong TypeScript

Bài tập TypeScript: Các dạng bài tập cơ bản

Bài tập TypeScript: Các dạng bài tập cơ bản

Phân tích JSON trong TypeScript

Phân tích JSON trong TypeScript

Property trong TypeScript

Property trong TypeScript

Phần 2: Biến trong TypeScript

Phần 2: Biến trong TypeScript

Phần 1: Biến trong TypeScript

Phần 1: Biến trong TypeScript

Triple-Slash Directives trong TypeScript là gì?

Triple-Slash Directives trong TypeScript là gì?

Phân biệt Modules và Namespaces trong TypeScript

Phân biệt Modules và Namespaces trong TypeScript

Tìm hiểu Branded Type trong TypeScript

Tìm hiểu Branded Type trong TypeScript

Namespaces trong Typescript

Namespaces trong Typescript

Declaration Merging trong TypeScript

Declaration Merging trong TypeScript

Cách sử dụng @ts-expect-error trong typescript

Cách sử dụng @ts-expect-error trong typescript

5 ký hiệu khó hiểu cần biết trong TypeScript

5 ký hiệu khó hiểu cần biết trong TypeScript

Dependency Injection trong Typescript

Dependency Injection trong Typescript

Mapped Types trong TypeScript

Mapped Types trong TypeScript

5 Cách giúp bạn loại bỏ

5 Cách giúp bạn loại bỏ "any" trong TypeScript

10 mẹo và thủ thuật hay nhất trong TypeScript

10 mẹo và thủ thuật hay nhất trong TypeScript

Top