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áp | Code | Kết quả cho [] | Kết quả cho {} | Độ tin cậy |
|---|---|---|---|---|
| Array.isArray() | Array.isArray(arr) | true | false | ✅ Cao nhất (khuyên dùng) |
| instanceof | arr instanceof Array | true | false | ⚠️ Sai qua iframe/window khác |
| Object.prototype.toString | Object.prototype.toString.call(arr) === "[object Array]" | true | false | ✅ Cao (ES5) |
| constructor | arr.constructor === Array | true | false | ⚠️ Có thể bị ghi đè |
Khuyên dùng: Luôn sử dụng Array.isArray() cho code hiện đại (ES5+).