2014-05-05 87 views
4

如果数组包含单个元素,则jQuery inArray返回-1。如果数组包含单个元素,则jQuery inArray()返回-1

var a = Array(1); 
console.log($.inArray(1,a)); 

返回-1。但是如果数组包含2个或更多的元素,它可以完美地工作。

var a = Array(1,2,3); 
console.log($.inArray(1,a)); 

返回完美位置。

+1

问得好感谢我们都了解 –

+0

你upvoted这个@sudharsan ..? :) –

+1

这是保密我没有告诉 –

回答

6

与您似乎认为的相反,Array(1)不会创建包含元素1的数组,但其大小为1。这是您仅传递一个参数时获得的特定行为,它是一个整数。

the MDN

如果传递给Array构造的唯一参数是0和2^32-1(含)之间的整数 ,这将返回一个新的JavaScript阵列 与长度设定为数。

您应该几乎从不使用这个Array构造函数,它的奇怪行为会导致很多错误,而且这些错误几乎是无用的。使用此:

var a = [1]; 
+0

'从不(或几乎从不)使用数组构造函数。 “那是什么原因..? –

+0

是的。谢谢。 – Tejas

+0

@RajaprabhuAravindasamy 1)它的行为太令人吃惊了。 2)它几乎是无用的 –

相关问题