Array.prototype..isArray()
Array.isArray(value) Returns:
boolean · Added in vES5 · Updated March 13, 2026 · Array Methods array type-checking isarray
Array.isArray() is the definitive way to check if a value is an array in JavaScript. Unlike the typeof operator, which returns “object” for arrays, Array.isArray() returns true specifically for array instances. This method was introduced in ES5 to solve the longstanding problem of array type detection.
Syntax
Array.isArray(value)
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
value | any | — | The value to check |
Examples
Basic usage
Array.isArray([Global_Objects::eval]); // true
Array.isArray([1, 2, 3]); // true
Array.isArray(new Array()); // true
Array.isArray("hello"); // false
Array.isArray({}); // false
Array.isArray(null); // false
Array.isArray(undefined); // false
Checking function arguments
function logArgs(...args) {
console.log(Array.isArray(args)); // false - arguments is not an array
console.log(Array.isArray([...args])); // true - spread creates array
}
logArgs("a", "b", "c");
Safe type checking
function processData(data) {
if (!Array.isArray(data)) {
throw new TypeError("Expected an array");
}
return data.map(x => x * 2);
}
processData([1, 2, 3]); // [2, 4, 6]
processData("not array"); // Throws TypeError
Filtering arrays from mixed data
const mixed = [1, "hello", [1, 2], {a: 1}, [3, 4]];
const arrays = mixed.filter(Array.isArray);
console.log(arrays);
// [[1, 2], [3, 4]]
Validating API responses
async function fetchUsers() {
const response = await fetch("/api/users");
const data = await response.json();
if (!Array.isArray(data)) {
console.error("Expected array, got:", typeof data);
return [Global_Objects::eval];
}
return data;
}
Type guard in TypeScript
function process(items: unknown) {
if (Array.isArray(items)) {
// TypeScript now knows items is an array
items.forEach(item => console.log(item));
} else {
console.log("Not an array:", items);
}
}
Checking nested arrays
const matrix = [[1, 2], [3, 4], [5, 6]];
const flat = [1, 2, 3, 4, 5];
const allArrays = matrix.every(Array.isArray);
console.log(allArrays); // true
const allArraysFlat = flat.every(Array.isArray);
console.log(allArraysFlat); // false
Validating function parameters
function sum(...numbers) {
if (!numbers.every(Array.isArray)) {
return "All arguments must be numbers";
}
return numbers.reduce((a, b) => a + b, 0);
}
console.log(sum([1, 2], [3, 4])); // 10
Why Not typeof?
typeof [Global_Objects::eval] // "object" (wrong!)
typeof {} // "object" (correct)
Array.isArray([Global_Objects::eval]) // true (correct!)
The typeof operator cannot distinguish arrays from plain objects, making Array.isArray() essential for proper type checking.