jQuery 搜索数组数组

jQuery Searching an Array of Arrays?

本文关键字:数组 搜索 jQuery      更新时间:2023-09-26

我有以下内容,我正在尝试弄清楚如何搜索对象数组 - 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中?

如果数组包含对象,则$.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
    }
});
数组

arr将包含一个对象列表。 为什么newData会被"包含"在arr内? 它们是两个独立的变量。

更新 - 经过进一步检查,此行不好:

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

你本质上是在说在arr(它是空的(中寻找newData。

更新 - 这是一些应该可以工作的示例代码。 在这里,我将数据视为具有名为"url"的属性的普通旧对象(而不是对象数组(。

http://jsfiddle.net/nWh6N/