2013-06-03 85 views
1

我想知道爲什麼/何時分別在JavaScript或jQuery中使用-1。由於索引是從0開始(0索引)

if ($.inArray('false', answers) > -1) { 
    window.console.log('you Lose!'); 
} 

乾杯,

克里斯

+2

也許是因爲數組索引從'0'在JavaScript啓動。 –

+0

您是否閱讀過文檔? – Bergi

回答

3

在這種情況下,返回-1如果你正在尋找的表達是不你正在尋找在在數組中。

雖然,根據its documentation$.inArray返回元素的索引(如果它被發現),指數-1是不可能的:這是由於索引從0開始爲最低可能值。

因此-1確實意味着無效的索引位置,即未找到。

所以,在你的代碼段,該試驗> -1意味着:檢查所有有效的索引是否被發現,或者換句話說,檢查給定值是否在數組中。

這在文件中甚至提到:

因爲JavaScript把0作爲鬆散等於假,如果我們檢查存在(即0 ==假的,但0 ==假的!)我們需要檢查它是否不等於(或大於)-1。

希望這有助於:-)

+0

PS:如果它可以幫助你,如果你能接受這個答案作爲答案會很好:-) –

2

我使用這個代碼段。

var arr = ['a', 'b', 'c']; 

alert(arr[0]) // a; 

因此,在一個陣列($.inArray[].indexOf)檢查一個元素的索引時,將是錯誤的則返回0的元素不存在:

var arr = ['a', 'b', 'c']; 

alert(arr.indexOf('a')); // 0 
alert(arr.indexOf('b')); // 1 
alert(arr.indexOf('c')); // 1 
alert(arr.indexOf('d')); // -1 

我會說jQuery在這裏有一個設計缺陷,我寧願認爲jQuery.inArray會返回布爾值(true/false)。