一、基本介绍
在JavaScript中,array.isarray是一种方法,可以判断某个变量是否为数组,该方法会返回一个布尔值。
Array.isArray(value)
其中value是要判断的变量。如果它是数组,则返回true,否则返回false。
二、使用方法
使用array.isarray方法时,需要注意以下几点:
1、只有在使用对象字面量表示数组的时候,[]运算符才会返回true,使用new Array()返回的则不是true。
Array.isArray([]); // true
Array.isArray(new Array()); // true
Array.isArray({}); // false
2、当使用iframe或者跨域窗口时,可能会出现数组的类型从原本的“object”变为“function”所引起的问题。
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length - 1].Array;
a = new xArray(1, 2, 3);
console.log(Array.isArray(a)); // false
3、因为该方法是从ECMAScript 5 Edition标准中引入的,因此在IE 8及以下浏览器中不支持该方法。
三、其他注意事项
1、如果在ES5之前的JavaScript环境下工作,可以使用一些替代方法来检测数组。
//方法一
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
//方法二
function isArray(obj) {
return obj.constructor === Array;
}
//方法三
function isArray(obj) {
return typeof obj.length === 'number' &&
typeof obj.splice === 'function' &&
!(obj.propertyIsEnumerable('length'));
}
2、当数组跨frame或者跨域导致类型变化时,也可以使用以下方式来检测数组。
function isArray(obj) {
if(Object.prototype.toString.call(obj) === '[object Array]') {
return true;
} else if (typeof obj.length === 'number' && obj.splice !== undefined) {
return true;
} else {
return false;
}
}
四、总结
通过上述介绍,我们了解了array.isarray在JavaScript中判断一个变量是否为数组的方法,以及使用方法和注意事项。同时,我们还介绍了一些替代方法来检测数组。在实际开发中,需要结合具体情况来选择使用方法。