JavaScript Array.isArray 方法
最后修改于 2025 年 4 月 4 日
在本文中,我们将展示如何使用 JavaScript 中的 Array.isArray 方法来检查数组类型。
数组类型检查
Array.isArray 方法确定传递的值是否为数组。 如果该值为数组,则返回 true,否则返回 false。 此方法在 JavaScript 中进行类型检查时特别有用。
与对数组返回 "object" 的 typeof 运算符不同,Array.isArray 专门识别数组对象。 这使其成为检查 JavaScript 代码中数组的最可靠方法。
该方法是在 ECMAScript 5 中引入的,用于解决可靠检测不同执行上下文中的数组的问题。 即使在不同的框架或窗口中创建数组,它也能正常工作。
Array.isArray() 基本示例
以下示例演示了 Array.isArray 方法的基本用法。
const fruits = ['apple', 'banana', 'orange']; const notArray = 'This is a string'; console.log(Array.isArray(fruits)); // true console.log(Array.isArray(notArray)); // false
我们使用 Array.isArray 检查两个不同的值。 第一个是实际数组,它返回 true,而第二个是字符串,它返回 false。 这演示了该方法的基本功能。
$ node main.js true false
检查不同的值类型
Array.isArray 方法可以将数组与其他 JavaScript 对象和原始类型区分开来。
console.log(Array.isArray([])); // true
console.log(Array.isArray({})); // false
console.log(Array.isArray(null)); // false
console.log(Array.isArray(undefined)); // false
console.log(Array.isArray(123)); // false
console.log(Array.isArray('array')); // false
console.log(Array.isArray(true)); // false
我们使用 Array.isArray 测试各种 JavaScript 类型。 只有空数组字面量返回 true。 所有其他类型,包括对象、null、undefined、数字、字符串和布尔值,都返回 false。
$ node main.js true false false false false false false
检查类似数组的对象
JavaScript 中的某些对象类似于数组,但不是真正的数组。 Array.isArray 可以将它们区分开来。
const realArray = [1, 2, 3];
const arrayLike = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
console.log(Array.isArray(realArray)); // true
console.log(Array.isArray(arrayLike)); // false
我们将一个真正的数组与一个类似数组的对象进行比较。 尽管两者都有索引属性和 length 属性,但只有真正的数组通过了 Array.isArray 检查。 这对于需要以不同方式处理这两种数组类型的函数来说非常重要。
$ node main.js true false
检查参数对象
函数内部可用的 arguments 对象是另一个类似于数组的对象,但不是真正的数组。
function test() {
console.log(Array.isArray(arguments));
}
test(1, 2, 3);
在函数内部,我们检查 arguments 对象是否为数组。 尽管它具有类似数组的行为(数字索引和 length 属性),但它返回 false,因为它不是真正的数组。 现代 JavaScript 经常使用 rest 参数代替 arguments 以获得更好的数组兼容性。
$ node main.js false
跨执行上下文检查
即使在检查来自不同执行上下文(如 iframe 或 window)的数组时,Array.isArray 也能正常工作。
// Simulating an array from another context
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const foreignArray = window.frames[window.frames.length-1].Array;
const arr = new foreignArray(1, 2, 3);
console.log(Array.isArray(arr)); // true
document.body.removeChild(iframe);
我们创建一个 iframe 来模拟不同的执行上下文,并检查在该上下文中创建的数组。 与 instanceof 检查不同,Array.isArray 正确地将外部数组标识为真正的数组。 这证明了它在不同上下文中的可靠性。
$ node main.js true
来源
在本文中,我们演示了如何使用 Array.isArray 方法来检查 JavaScript 中的数组类型。
作者
列出 所有 JS 数组函数。