当我需要测试变量是否为数组时(例如,函数中的输入参数可能是对象或数组)我通常使用这段代码
typeof(myVar) === 'object' && myVar.length !== undefined;
这是正确的方式,还是有更有效的方法,考虑到即使myVar instanceof Array
is faster由于iframe
问题应该避免这种方式?
答案 0 :(得分:6)
Array.isArray
现在可以与ECMAScript 5一起使用,因此您可以将polyfill用于older browsers:
if(!Array.isArray) {
Array.isArray = function (vArg) {
return Object.prototype.toString.call(vArg) === "[object Array]";
};
}
Array.isArray(myVar);
答案 1 :(得分:0)
“iframe问题”可以简单地通过不对帧和数组使用相同的名称来避免。在我看来不难做到。那就是说,我从来没有必要断言是否东西是一个阵列...
答案 2 :(得分:0)
如果您已在代码中使用jQuery,则可以使用jQuery.isArray()。这是文档:
答案 3 :(得分:0)
您可以尝试 - Object.prototype.toString.call
一个例子 -
var a = [1,2]
console.log(Object.prototype.toString.call(a))
返回[object Array]
可以用以下方式用字符串切片方法检查
console.log(Object.prototype.toString.call(a).slice(8,-1)) <br />
返回“Array”
var a = [1,2]
console.log(Object.prototype.toString.call(a).slice(8,-1) == "Array") // true