2012-04-04 4 views
3

Ich bin ziemlich neu in jQuery/JS. Aber ich habe jQuery, wo ich ein paar Checks machen möchte. Ich möchte überprüfen, ob die URL bereits gedruckt wurde oder nicht. Die Daten für die Schleife kommen von JSON, wenn das wichtig ist.Möglich, URL zu jQuery-Array hinzufügen und einige Prüfungen damit

Grundsätzlich hätte ich ein Array var = myArray, wo ich alle URLs aus der Schleife setzen würde. Ich gehe mit jedem diese Schleife durch. Dann würde ich jedes Mal überprüfen, ob die URL bereits im Array ist. Als Pseudo:

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

Ich spielte aounrd mit jQuery.inArray(), aber ich bekam immer -1

Vielen Dank für Ihre Hilfe!

Antwort

1

In Ihrem Pseudo-Code, den Sie auf das Array schoben, bevor Sie überprüfen, ob es existiert, so dass es immer da sein würde. Das und brauchen Sie data.url statt {'url':data.url}

Arbeitsbeispiel zu drücken, was Sie suchen:

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);   
    }  
})​;​ 
+0

Dank verwenden, ja drückt die Info an falscher Stelle war der Schlüssel hier. – user995317

1

drücken Sie einfach die URL direkt stattdessen ein Objekt zu schaffen:

myArray.push(data.url); 

Dann sollten jquery.inarray() gut funktionieren

if (jquery.inArray(data.url, myArray)) 

Allerdings sollten Sie die neue URL am Ende der hinzufügen Schleife statt am Anfang, oder sie werden immer im Array sein, wenn Sie zur Überprüfung gehen.

Demo: http://jsfiddle.net/c2934/

1

versuchen Sie dies:

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

Sie können auch $ .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 }); 
}); 
Verwandte Themen