2012-09-29 125 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'),那么您的测试目前将工作。