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

Kiểm tra biến có phải mảng trong JavaScript (3 cách)

Trong JS, mảng là đối tượng đặc biệt (typeof [] === 'object'). Do đó, cần phương pháp chuyên biệt để phân biệt mảng và object thường.

Cách 1: Array.isArray() — Khuyên dùng

Phương thức chuẩn ES5, hoạt động đúng trong mọi ngữ cảnh (iframe, window khác nhau).

Array.isArray(bien); // true / false

Ví dụ

<script>
  const arr = [1,2,3,4,5];
  const str = "i love javascript";
  document.write(Array.isArray(arr)); // true
  document.write('<br>');
  document.write(Array.isArray(str)); // false
</script>

Cách 2: instanceof Array

Kiểm tra chuỗi prototype. Nhược điểm: Sai khi mảng đến từ iframe/window khác (prototype khác).

bien instanceof Array; // true / false

Ví dụ

<script>
  const arr = [1,2,3];
  const obj = {};
  document.write(arr instanceof Array); // true
  document.write('<br>');
  document.write(obj instanceof Array); // false
</script>

Cách 3: Kiểm tra constructor

bien.constructor === Array; // true / false

Nhược điểm: Có thể bị ghi đè (obj.constructor = Array), không an toàn.

Ví dụ

<script>
  const arr = [1,2,3];
  document.write(arr.constructor === Array); // true
</script>

Bảng so sánh

Phương phápĐộ tin cậyHỗ trợ cross-frameKhuyến nghị
Array.isArray()Cao nhấtCóDùng mặc định
instanceofTrung bìnhKhôngChỉ cùng window
constructorThấpKhôngKhông khuyến khích

Kết luận

Luôn dùng Array.isArray() cho code production. Hai cách còn lại chỉ để hiểu bản chất hoặc code cũ.