Javascript jQuery和数组isArray工作不正常?
jQuery和数组Javascript jQuery和数组isArray工作不正常?,javascript,jquery,Javascript,Jquery,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 > -
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”,它将返回一个none数组
但如果我有两个输入,并且都有名称“plan”,它将返回一个数组
我使用jQuery.isArray
检查它是否是数组,但被迫放弃使用jQuery.isArray
人们评论说它是nodelist,但nodelist的用法与数组完全一样。那么,在什么情况下,您实际上希望避免它像数组一样使用呢?不,它工作正常
getElementsByTagName
返回一个节点列表——类似于数组的对象,但不是实际数组,因此jQuery返回false是正确的
您的函数返回true是因为它正在测试作为对象的类型(节点列表是一个对象),并且它有一个长度(节点列表有一个长度)
如果确实要测试数组,请使用数组的
foo instanceof
,这取决于具体情况。如何定义“数组”<代码>标记不是一个数组
。如果它们都返回false,那么很可能它们都是对的,而你是错的,它不是一个真正的数组。@adeneo:特别是,它是一个节点列表。@SLaks-的确,它甚至是“活动”的!但是返回值的用法与数组完全相同,您可以像数组一样遍历它。为什么希望它返回一个假值?