Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery和数组isArray工作不正常?_Javascript_Jquery - Fatal编程技术网

Javascript jQuery和数组isArray工作不正常?

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 > -

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”,它将返回一个none数组

但如果我有两个输入,并且都有名称“plan”,它将返回一个数组

我使用
jQuery.isArray
检查它是否是数组,但被迫放弃使用jQuery.isArray


人们评论说它是nodelist,但nodelist的用法与数组完全一样。那么,在什么情况下,您实际上希望避免它像数组一样使用呢?

不,它工作正常
getElementsByTagName
返回一个节点列表——类似于数组的对象,但不是实际数组,因此jQuery返回false是正确的

您的函数返回true是因为它正在测试作为对象的类型(节点列表是一个对象),并且它有一个长度(节点列表有一个长度)


如果确实要测试数组,请使用数组的
foo instanceof

,这取决于具体情况。如何定义“数组”<代码>标记不是一个
数组
。如果它们都返回false,那么很可能它们都是对的,而你是错的,它不是一个真正的数组。@adeneo:特别是,它是一个节点列表。@SLaks-的确,它甚至是“活动”的!但是返回值的用法与数组完全相同,您可以像数组一样遍历它。为什么希望它返回一个假值?