2016-08-07 21 views
0

Ich habe einen funktionierenden Code, der den Titel eines Klassenelements zu einem Array hinzufügt und dann an eine localStorage "Datenbank" schiebt. Alles in Ordnung, aber ich möchte Elemente dort oft nicht schieben "wenn es schon da ist". Ich habe ein paar Lösungen versucht, aber ich habe es nicht verstanden. Jede Hilfe wird sehr geschätzt. Gehirn schmilzt ..,Vermeiden Sie Push-Duplikate zu localStorage

var stores=[] 
    jQuery('.additem').click(function() { 
    var x = jQuery(this).closest('h4.title').text(); 
    if ((x == null) || (x == "") || (x == ($.inArray(this.x) > -1))) { 
     jQuery(this).closest('.infobox').html('Already there or empty.'); 
     jQuery(this).closest('.infobox').show().delay(500).fadeOut(1000); 
    } else { 
     stores.push(x); 
     console.log(stores); 
     window.localStorage.setItem("database", stores.join(" + ")); 
     } 
    }); 

auch versucht, mit

(x == (stores.indexOf(this) > -1)) 

und ein paar etwas anderes. Danke

Antwort

0

Ich denke, du übertreibst es. Ist das nicht nur Arbeit:

if ((x == null) || (x == "") || stores.indexOf(x) > -1) { 
+0

übertreiben es ist typisch für mich :) Aber das Problem gefunden. Ich habe früher für das Debugging von var stores = [C] definiert, anstatt leer. (Wobei C = die localStorage-Datenbank. Aber danke! Funktioniert jetzt –

0

Sie könnten ein Set verwenden, die zu und von einer Anordnung zur Speicherung umgewandelt werden können.

var s = new Set(); 
s.add(value); 
localStorage.setItem('mySet',Array.from(s).toString()) 

var s = new Set(JSON.parse(localStorage.getItem('mySet')) 
+0

können Sie angeben? Vielleicht ein Beispiel? –

+0

gerade bearbeitet meine Antwort @Mik_A – Hunter

+0

ok Ich schaue mir das an. –