2012-09-29 87 views
2

我想檢查"foo"是否存在於名爲"Array"的數組中,但$.inArray總是返回-1。爲什麼它返回-1,我該如何解決這個問題?json inArray總是返回-1 jquery

這是我在jsFiddle代碼:

var Array = [] 
Array.push({'test':'fuu','url':'sdfsdfsdf'}); 
Array.push({'test':'qsgbfdsbgsdfbgsfdgb','url':'sdfssffbgsfdbgdfsdf'}); 
if($.inArray('fuu',Array) != -1) alert('present'); 
else alert('absent'); 
alert($.inArray('fuu',Array)); 
+1

您不應該有一個名爲* Array *的數組。 – m90

+0

不應將數組命名爲'Array'。 – Dev

+0

答案已經給出,所以我會在這裏添加我的評論。請參閱http://jsfiddle.net/B5yF2/6/以解決您的代碼和解釋性意見。 –

回答

3

'fuu'實際上不是數組中,它的陣列的內部對象的值。我擔心你需要更復雜的支票。我也不會使用Array作爲變量名稱,因爲這是Array對象的名稱,但顯然它不是保留字?不確定。

var arr = []; 
... 
var found = false; 
$.each(arr, function() { 
    if (this.test === 'fuu') { 
     found = true; 
     return false; 
    } 
}); 
if (found) alert('present'); 
+1

要打破'$ .each',你需要'返回false'。 – pimvdb

+0

@pimvdb謝謝;已更新 –

+0

@ExplosionPills如何使用此方法獲取對象'index'?所以當'this.test ==='fuu''爲真時,我們可以在'arr'中獲得物體的位置嗎? – Ruddy

3

您正在推動一個Hash到陣列

Array.push({'test':'fuu','url':'sdfsdfsdf'}); 

,然後一個字符串測試。

$.inArray('fuu',Array) 

如果您添加Array.push('fuu'),那麼您的測試目前將工作。