1. Giới thiệu về Array

Array (mảng) là một dạng đặc biệt của Object, dùng để lưu trữ danh sách các phần tử. Mỗi phần tử có một chỉ số (index) bắt đầu từ 0.

// Array là một dạng của Object
const myArr = ["Phương Anh", "Phương Anh", "Phương Anh", "An", "Dũng"];
console.log(myArr.length); // độ dài mảng
console.log(myArr);

Trên thực tế, mảng có thể chứa mọi kiểu dữ liệu — số, chuỗi, boolean, object, thậm chí mảng khác — nhưng trong dự án thực tế nên thống nhất 1 kiểu dữ liệu để dễ quản lý.

2. Khai báo, truy cập & cập nhật phần tử

// Truy cập phần tử theo index
console.log(myArr[0]);

// Cập nhật giá trị tại index
myArr[0] = "Vũ Anh";
myArr[1] = "Tạ An";
myArr[2] = "Quốc Dũng";
console.log(myArr[0]);

// Thêm phần tử mới
myArr[myArr.length] = "Bảo Trâm";
console.log(myArr);

Khi thêm phần tử mới, chỉ cần gán vào vị trí myArr[myArr.length] — JS sẽ tự thêm vào cuối mảng.

3. Duyệt mảng trong JavaScript

Có nhiều cách duyệt qua các phần tử của mảng, tuỳ trường hợp sử dụng.

Cách 1. For thông thường

for (let i = 0; i < myArr.length; i++) {
  console.log(myArr[i]);
}

Cách 2. For...in (lấy index)

for (let index in myArr) {
  console.log(index);
}

Cách 3. For...of (lấy value)

for (let value of myArr) {
  console.log(value);
}

for...in duyệt theo index — phù hợp khi cần vị trí. for...of chỉ trả về giá trị — tiện khi chỉ cần đọc.

4. Ví dụ thực hành

Tính tổng số chẵn trong mảng

function sumArr(numbers) {
  let sum = 0;
  for (let number of numbers) {
    if (number % 2 === 0) sum += number;
  }
  return sum;
}

console.log(sumArr([5, 2, 8, 7, -3, -6]));

Xoá phần tử trong mảng (tạo mảng mới)

let indexDelete = 2;
const newArr = [];

for (index in myArr) {
  if (indexDelete === +index) continue;
  newArr[newArr.length] = myArr[index];
}

console.log(newArr);

Tìm số lớn nhất và hoán đổi vị trí

function swap(numbers) {
  console.log(numbers);

  let max = numbers[0];
  let indexOfMax = 0;

  for (let number in numbers) {
    if (max < numbers[number]) {
      max = numbers[number];
      indexOfMax = number;
    }
  }

  numbers[indexOfMax] = numbers[0];
  numbers[0] = max;

  return numbers;
}

console.log(swap([5, 2, 8, 7, 100, -6]));

Khi cần đổi vị trí hai phần tử, luôn cần biết **index** của chúng trong mảng.

5. Bài tập luyện tập

Xoá các phần tử trùng nhau trong mảng người dùng.

const myUser = ["User 1", "User 2", "User 3", "User 2", "User 4"];
let newMyUser = [];

for (let index in myUser) {
  let isValid = true;

  for (let user of newMyUser) {
    if (user === myUser[index]) {
      isValid = false;
      break;
    }
  }

  if (isValid) {
    newMyUser[newMyUser.length] = myUser[index];
  }
}

console.log(newMyUser);

Logic: Với mỗi phần tử, kiểm tra xem đã tồn tại trong mảng mới chưa. Nếu chưa — thêm vào; nếu có — bỏ qua.