Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách kiểm tra đối tượng JavaScript có phải mảng không (Array.isArray)

Phương thức Array.isArray() là cách chuẩn và đáng tin cậy nhất để kiểm tra xem một giá trị có phải là mảng hay không. Nó trả về true nếu đối số là mảng, ngược lại trả về false.

Tại sao không dùng typeof? Vì typeof [] === "object" trả về true, không phân biệt được mảng và object thường.

Ví dụ minh họa

<!DOCTYPE html>
<html lang="vi">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Kiểm tra mảng JavaScript</title>
  <style>
    body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
    .result, .sample { font-size: 20px; font-weight: 500; margin: 10px 0; }
    button { padding: 8px 16px; cursor: pointer; }
  </style>
</head>
<body>
  <h1>Kiểm tra đối tượng có phải mảng không</h1>
  <div class="sample" id="sample"></div>
  <div style="color: green;" class="result" id="result"></div>
  <button class="Btn" id="checkBtn">KIỂM TRA</button>
  <h3> Nhấn nút để kiểm tra đối tượng trên có phải mảng không </h3>
  <script>
    const sampleEle = document.querySelector("#sample");
    const resEle = document.querySelector("#result");
    const arr = [1, 2, 3, 4, 'A', 'B', 'C'];
    sampleEle.innerHTML = "arr = [" + arr.join(", ") + "]";

    document.querySelector("#checkBtn").addEventListener("click", () => {
      resEle.innerHTML = 'Đối tượng trên là mảng: ' + Array.isArray(arr);
    });
  </script>
</body>
</html>

Kết quả

Hiển thị mảng ban đầu. Khi nhấn KIỂM TRA, kết quả: Đối tượng trên là mảng: true

So sánh các phương pháp kiểm tra:

Phương phápCodeKết quả cho []Kết quả cho {}Độ tin cậy
Array.isArray()Array.isArray(arr)truefalse✅ Cao nhất (khuyên dùng)
instanceofarr instanceof Arraytruefalse⚠️ Sai qua iframe/window khác
Object.prototype.toStringObject.prototype.toString.call(arr) === "[object Array]"truefalse✅ Cao (ES5)
constructorarr.constructor === Arraytruefalse⚠️ Có thể bị ghi đè

Khuyên dùng: Luôn sử dụng Array.isArray() cho code hiện đại (ES5+).