2

我想检查是否"foo"存在于名为的数组中"Array",但$.inArray总是返回-1。为什么它会返回-1,我该如何解决?

这是我在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));
4

2 回答 2

3

'fuu'实际上不在数组中,它是数组内部对象的值。恐怕您需要更复杂的检查。我也不会Array用作变量名,因为那是Array对象的名称,但显然它不是保留字?没有把握。

var arr = [];
...
var found = false;
$.each(arr, function () {
   if (this.test === 'fuu') {
      found = true;
      return false;
   }
});
if (found) alert('present');
于 2012-09-29T15:41:47.953 回答
3

您正在将哈希推入数组

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

然后测试一个字符串。

$.inArray('fuu',Array)

如果您添加 Array.push('fuu') 那么您的当前测试将起作用。

于 2012-09-29T15:44:54.867 回答