JS判断数组四种实现方法详解
在JavaScript中,判断一个变量是否是数组是一项非常常见的操作。本文将介绍四种常用的方法来判断一个变量是否是数组。
方法一:Array.isArray()
Array.isArray()
是ES5中新增的方法,可以直接判断一个变量是否是数组。
Array.isArray([]); // true
Array.isArray({}); // false
Array.isArray("array"); // false
方法二:instanceof
使用instanceof
操作符也可以判断是否是数组,但是需要注意的是如果数组是在iframe或其他window中定义的,那么instanceof
会失效。
[] instanceof Array; // true
({}) instanceof Array; // false
方法三:constructor
constructor
属性用于返回创建特定类型对象的函数的引用,可以通过判断对象的constructor是否为Array来判断是否是数组。
[].constructor === Array; // true
({}).constructor === Array; // false
方法四:Object.prototype.toString
使用Object.prototype.toString
方法可以得到一个精确的数据类型,并且不受变量所在环境的影响。
Object.prototype.toString.call([]) === '[object Array]'; // true
Object.prototype.toString.call({}) === '[object Object]'; // true
示例说明
const arr = [1, 2, 3];
const obj = { a: 1, b: 2 };
// 判断arr是否为数组
console.log(Array.isArray(arr)); // true
console.log(arr instanceof Array); // true
console.log(arr.constructor === Array); // true
console.log(Object.prototype.toString.call(arr) === '[object Array]'); // true
// 判断obj是否为数组
console.log(Array.isArray(obj)); // false
console.log(obj instanceof Array); // false
console.log(obj.constructor === Array); // false
console.log(Object.prototype.toString.call(obj) === '[object Array]'); // false
从上面的示例代码可以看出,我们可以使用四种方法判断变量是否为数组,而且结果都是一致的。在实际使用中,建议使用Array.isArray()
方法来判断是否为数组。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS判断数组四种实现方法详解 - Python技术站