2012-12-27 161 views
1
var x = new Array(10); 
$.inArray(10,x); 
#Returns -1 

FiddleInArray返回-1,匹配值

我遇到這個奇怪的問題,檢查數組中的值與$.inArray,真的很簡單。

但是,如果數組只有一個值,inArray返回-1。 如果我向數組添加另一個值,它按預期工作。

這隻發生在整數而不是字符串。

發生了什麼事?

+6

您剛剛創建了一個長度爲10的數組,而不是包含值10的數組,請參閱[** DOCS **](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array) – adeneo

+1

提示:1. console.log(x)'2.在控制檯中檢查空數組 – elclanrs

回答

4

如果你想創建一個數(10)內部數組,你應該使用支架文字:

var x = [10]; 
$.inArray(10,x); 

或用推:

var x = new Array(); 
x.push(10); 

顯然,第一個是更具可讀性並且寫得更快。

JavaScript陣列被初始化與給定的元件,除了在單個參數被傳遞給Array構造的情況下,並且參數是一個數字。請注意,這種特殊情況僅適用於使用Array構造函數創建的JavaScript數組,而不適用於使用括號語法創建的數組文字。

如果傳遞給Array構造唯一的參數是一個整數,一個新的,空的JavaScript陣列和它的長度被設定爲編號 MDN

Fixed fiddle

0

var x = new Array(10);創建一個數組有10個插槽,而不是包含「10」的陣列