繁体   English   中英

jQuery 搜索 Arrays 的数组?

[英]jQuery Searching an Array of Arrays?

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

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将不起作用。 这是因为对象只有在相同 object 时才相等,而不仅仅是包含相同的值。

$.inArray在这里也不起作用,因为newData是一个字符串。 它不会为您在每个 object 中搜索,您需要自己使用自己的循环进行搜索。

像这样:

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
    }
});

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

更新 - 经进一步检查,这条线是不好的:

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

您实际上是在说在 arr 中查找 newData(它是空的)。

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

http://jsfiddle.net/nWh6N/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM