可以将URL添加到jQuery数组并使用它进行一些检查

可以将URL添加到jQuery数组并使用它进行一些检查,jquery,arrays,json,loops,each,Jquery,Arrays,Json,Loops,Each,我对jQuery/JS很陌生。但我在jQuery中有一个循环,我想在其中进行一些检查。我想检查URL是否已打印。如果有必要,循环的数据来自JSON 基本上,我会有一个数组var=myArray,我会把循环中的所有URL放在这个数组中。我和每个人都经历了这个循环。然后每次我都会检查URL是否已经在数组中。作为赝品: var myArray = []; each data { myArray.push({'url':data.url}); if data.url is alread

我对jQuery/JS很陌生。但我在jQuery中有一个循环,我想在其中进行一些检查。我想检查URL是否已打印。如果有必要,循环的数据来自JSON

基本上,我会有一个数组var=myArray,我会把循环中的所有URL放在这个数组中。我和每个人都经历了这个循环。然后每次我都会检查URL是否已经在数组中。作为赝品:

var myArray = [];
each data {
    myArray.push({'url':data.url});

    if data.url is already in myArray {
        do stuff
    }

    if data.url is not already in myArray {
        do other stuff
    }
}
我用jQuery.inArray()玩aounrd,但我总是得到-1


谢谢你的帮助

只需直接推送url,而不是创建对象:

myArray.push(data.url);
然后
jquery.inarray()
就可以正常工作了

if (jquery.inArray(data.url, myArray))
但是,您需要在循环的末尾而不是开始添加新的url,否则当您进行检查时,它们将始终位于数组中

演示:

试试这个:

var myArray = [];
$.each(data, function(i,u) {
   if($.inArray(u, myArray)){
        //DO STUFF IF URL IN ARRAY
   }else{
       myArray.push(u);
       //DO SUTFF IF URL NOT IN ARRAY
   }
});

在伪代码中,在检查数组是否存在之前,您将其推送到数组,以便它始终存在。您需要推送
data.url
,而不是
{'url':data.url}

您正在寻找的工作示例:

var testData = [ 1, 2, 2, 3, 4]
var myArray = []    
jQuery.each( testData, function( pos, val ) {
    // not in array
    if ( jQuery.inArray( val, myArray ) == -1 ) {
        myArray.push( val );

    // in array  
    } else {
        alert( "Already in [" + myArray + "] : " + val );        
    }    
})​;​
您还可以使用$.grep()


谢谢,是的,把信息推错地方是关键。
var myArray = [];
var ar = [{'url':'test1'},{'url':'test1'},{'url':'test3'}];
$.each(ar,function(ii,data) {
  if ($.grep(myArray,function(e,i){ return e.url == data.url;   }).length > 0) {
    console.log('in array: ' + data.url);
  } else {
    console.log('not in array: ' + data.url);
  }
  myArray.push({'url': data.url });
});