LazyCodet

a

02:58:33 6/3/2025 - 0 views -

Mảng | array

Array


Mảng là một cấu trúc dữ liệu trong JavaScript dùng để lưu trữ nhiều giá trị trong một biến duy nhất. Mảng là một loại đối tượng đặc biệt, có các chỉ số (index) bắt đầu từ 0 để truy cập các phần tử.

VÍ DỤ ​

let fruits = ["Táo", "Chuối", "Cam"];
console.log(fruits[0]); // "Táo"

Kiến thức cần học trước khi vào chương này


  • Biến

Kiến thức cơ bản


Khởi tạo mảng

Có hai cách chính để tạo mảng:

  • Dùng ký hiệu []:
    let numbers = [1, 2, 3, 4];
  • Dùng từ khóa new Array():
    let numbers = new Array(1, 2, 3, 4);

Lưu ý: Dùng [] thường được khuyến khích vì ngắn gọn và dễ đọc hơn.

Đặc điểm của mảng

  • Động: Mảng trong JS có thể thay đổi kích thước (thêm, xóa phần tử) mà không cần khai báo trước.
  • Linh hoạt: Có thể chứa nhiều kiểu dữ liệu khác nhau (số, chuỗi, đối tượng, thậm chí mảng khác).
    let mixedArray = [1, "hello", { name: "John" }, [2, 3]];
  • Chỉ số: Truy cập phần tử qua chỉ số (bắt đầu từ 0).

Dưới đây không phải là kiến thức cơ bản


1. Các thuộc tính và phương thức quan trọng

Thuộc tính

  • length: Trả về số lượng phần tử trong mảng.
    let arr = [1, 2, 3];
      console.log(arr.length); // 3

Phương thức thao tác cơ bản

  • push(): Thêm phần tử vào cuối mảng.
    let arr = [1, 2];
      arr.push(3); // [1, 2, 3]
  • pop(): Xóa và trả về phần tử cuối cùng.
    let arr = [1, 2, 3];
      arr.pop(); // Trả về 3, arr = [1, 2]
  • shift(): Xóa và trả về phần tử đầu tiên.
    let arr = [1, 2, 3];
      arr.shift(); // Trả về 1, arr = [2, 3]
  • unshift(): Thêm phần tử vào đầu mảng.
    let arr = [2, 3];
      arr.unshift(1); // [1, 2, 3]

Phương thức tìm kiếm và lọc

  • indexOf(): Tìm chỉ số đầu tiên của phần tử.
    let arr = ["a", "b", "a"];
      console.log(arr.indexOf("a")); // 0
  • includes(): Kiểm tra xem phần tử có trong mảng không (trả về true/false).
    let arr = [1, 2, 3];
      console.log(arr.includes(2)); // true
  • find(): Trả về phần tử đầu tiên thỏa mãn điều kiện.
    let arr = [1, 2, 3];
      let result = arr.find(num => num > 1); // 2

Phương thức lặp và biến đổi

  • forEach(): Duyệt qua từng phần tử.
    let arr = [1, 2, 3];
      arr.forEach(num => console.log(num * 2)); // 2, 4, 6
  • map(): Tạo mảng mới từ kết quả của hàm áp dụng lên từng phần tử.
    let arr = [1, 2, 3];
      let doubled = arr.map(num => num * 2); // [2, 4, 6]
  • filter(): Lọc các phần tử thỏa mãn điều kiện.
    let arr = [1, 2, 3, 4];
      let even = arr.filter(num => num % 2 === 0); // [2, 4]
  • reduce(): Gom các phần tử thành một giá trị duy nhất.
    let arr = [1, 2, 3];
      let sum = arr.reduce((acc, curr) => acc + curr, 0); // 6

Phương thức sắp xếp

  • sort(): Sắp xếp mảng (mặc định theo thứ tự chuỗi).
    let arr = [3, 1, 2];
      arr.sort(); // [1, 2, 3]
      arr.sort((a, b) => a - b); // Sắp xếp số tăng dần
  • reverse(): Đảo ngược thứ tự mảng.
    let arr = [1, 2, 3];
      arr.reverse(); // [3, 2, 1]

2. Mảng đa chiều

Mảng trong JS có thể chứa mảng khác (mảng lồng nhau).

let matrix = [
  [1, 2, 3],
  [4, 5, 6]
];
console.log(matrix[1][2]); // 6

3. Spread Operator (...)

Dùng để sao chép hoặc nối mảng:

  • Sao chép:
    let arr = [1, 2, 3];
      let copy = [...arr]; // [1, 2, 3]
  • Nối mảng:
    let arr1 = [1, 2];
      let arr2 = [3, 4];
      let merged = [...arr1, ...arr2]; // [1, 2, 3, 4]

4. Một số lưu ý

  • Tham chiếu: Mảng là đối tượng, nên khi gán mảng cho biến mới, nó chỉ sao chép tham chiếu, không tạo bản sao độc lập.
    let arr1 = [1, 2];
      let arr2 = arr1;
      arr2[0] = 5;
      console.log(arr1); // [5, 2]

Để tạo bản sao độc lập, dùng slice(), concat(), hoặc spread operator.

  • Sparse Array: Mảng có thể có "khoảng trống" (empty slots).
    let arr = [1, , 3];
      console.log(arr.length); // 3
      console.log(arr[1]); // undefined

5. Ứng dụng thực tế

  • Lưu danh sách dữ liệu (danh sách người dùng, sản phẩm).
  • Xử lý dữ liệu (lọc, sắp xếp, biến đổi).
  • Tạo cấu trúc dữ liệu phức tạp (ma trận, cây, đồ thị).