jQuery和数组isArray
无法正常工作
如果我这样做:
var tags = document.getElementsByTagName('div');
jQuery.isArray(tags) // returns false
Array.isArray(tags) // returns false
function isArray(object){
return typeof object === "object" && object.length > -1;
}
isArray(tags) // return true
此问题导致我的网站出现实际错误:
在我的网站上,我有一个表单标签,输入名称为“plan”。
如果我只有一个输入名称“plan”,它将返回一个无数组。
但如果我有两个输入并且都有名称“plan”,它将返回一个数组。
我使用jQuery.isArray
检查它是否是一个数组但是被迫放弃使用jQuery isArray。
人们评论说它是节点列表,但nodelist的用法与数组完全相同。那么在什么情况下你真的想避免它像数组一样使用?
答案 0 :(得分:5)
不,它运作正常。 getElementsByTagName
返回一个nodelist - 一个array-LIKE对象,但不是一个实际的数组,所以jQuery返回false是正确的。
您的函数返回true,因为它正在测试作为对象的类型(nodelist是一个对象)并且它有一个长度(nodelist有一个长度)。
如果您真的想要使用foo instanceof Array
测试数组。