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放弃了。

人们评论说这是节点列表,但是节点列表的用法就像一个数组。那么在什么情况下您实际上想要避免像数组一样使用它?

最佳答案

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

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

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

关于javascript - jQuery和Array isArray无法正常工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22237597/

10-09 18:05