json inArray总是返回-1 jquery

时间:2012-09-29 15:38:05

标签: jquery arrays json push

我想检查名为"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));

2 个答案:

答案 0 :(得分: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 :(得分:3)

您正在将哈希推入阵列

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

然后测试一个String。

$.inArray('fuu',Array)

如果您添加Array.push('fuu'),那么您的测试将会有效。