jQuery搜索数组的数组?

时间:2012-04-05 14:30:57

标签: javascript jquery arrays

我有以下内容,我试图弄清楚如何搜索对象数组 - 多次调用call()函数?

var arr = [];
var newData;

function call() {
    newData = $('a').attr('href');

    if($.inArray(newData, arr) == -1) {
      $.post('/blah', function(data) {
          arr.push(data);
      });
    }
}

data[object{ }]类似,因此arr变为[[object{id='1', myUrl=''}], [object{id='2', myUrl='' }]]

我想弄清楚newData中是否包含arr

2 个答案:

答案 0 :(得分:1)

如果数组包含对象,$.inArray将无效。这是因为如果对象是同一个对象,则它们只相等,而不仅仅包含相同的值。

$.inArray也不会在这里工作,因为newData是一个字符串。它不会为你搜索每个对象,你自己需要自己的循环。

这样的事情:

newData = $('a').attr('href');
$.each(arr, function(){
    if(this.myUrl === newData){
        $.post('/blah', function(data) {
            arr.push(data);
        });
        return false; // break once a match is found
    }
});

答案 1 :(得分:0)

数组arr将包含一个对象列表。为什么newData中会arr被“包含”?它们是两个独立的变量。

更新 - 经过进一步检查,这条线路不行:

if($.inArray(newData, arr) == -1) {

你实际上是在arr中寻找newData(它是空的)。

更新 - 以下是一些应该有效的示例代码。在这里,我将数据视为一个普通的旧对象(不是一个对象数组),其属性名为“url”。

http://jsfiddle.net/nWh6N/