2013-09-28 2 views
0

Vous devez vérifier les doublons avant de stocker de nouvelles valeurs dans localStorage.Recherche de doublons avec jQuery et localStorage

Here's a working fiddle qui fait tout ce dont j'ai besoin sauf cela.

N'hésitez pas à me suggérer d'autres façons de m'aider à améliorer mon apprentissage.

est ici une partie du code qui est dans le violon:

("button#save").click(function() { 
    var id = $("#id").val(); 


    if (id != "") { 
     var text = 'http://' + id + '.tumblr.com'; 
    } else { 
     alert('empty'); 
     return false 
    } 

    // UPDATE 
    var result = JSON.parse(localStorage.getItem("blog")); 
    if (result == null) result = []; 

    result.push({ 
     id: id, 
     tumblr: text 
    }); 
    // SAVE 
    localStorage.setItem("blog", JSON.stringify(result)); 


    // APPEND 
    $("#faves").append('<div class="blog"><button class="del" id=' + id + '>x</button><a target="_blank" href=' + text + '>' + imgstem + id + imgstemclose + '</a></div>'); 


}); 

// INIT 
var blog = JSON.parse(localStorage.getItem("blog")); 
var stem = 'http://' 
var stemclose = '.tumblr.com'; 
var imgstem = '<img src="http://api.tumblr.com/v2/blog/' 
var imgstemclose = '.tumblr.com/avatar/48"/>' 

//console.log(blog[0].id); 

if (blog != null) { 
    for (var i = 0; i < blog.length; i++) { 
     var item = blog[i]; 
     var text = 'http://' + item.id + '.tumblr.com'; 
     $("#faves").append('<div class="blog"><button class="del" id=' + item.id + '>x</button><a href=' + text + '>' + imgstem + item.id + imgstemclose + '</a></div>'); 

    } 
} 

$('#faves').on('click', 'button.del', function (e) { 

    var id = $(e.target).attr('id'); 

    // UPDATE 
    var blog = JSON.parse(localStorage.getItem("blog")); 

    var blog = blog.filter(function (item) { 
     return item.id !== id; 
    }); 

    // SAVE 
    localStorage.setItem("blog", JSON.stringify(blog)); 


    // REMOVE 
    $(e.target).parent().remove(); 

}); 
+0

vous serez en mesure d'utiliser underscore bibliothèque –

+0

@ArunPJohny Je préférerais ne pas ajouter plus de bibliothèques et garder ce léger pour vérifier simplement les clés en double. Cependant, si vous pensez que l'utilisation d'un underscore ajouterait une valeur réelle à un refactor, je serais heureux de le voir. – user1452893

+0

pas beaucoup ... voir ceci avec le trait de soulignement http://jsfiddle.net/arunpjohny/KCPA6/1/ –

Répondre

2

Voir une implémentation très simple

$("button#save").click(function() { 
    var id = $("#id").val(); 

    if (id == "") { 
     alert('empty'); 
     return false 
    } 

    // UPDATE 
    var result = JSON.parse(localStorage.getItem("blog")) || []; 

    var loc = result.filter(function (item) { 
     return item.id === id; 
    }); 
    if (loc.length) { 
     return; 
    } 

    var text = 'http://' + id + '.tumblr.com'; 
    result.push({ 
     id: id, 
     tumblr: text 
    }); 
    // SAVE 
    localStorage.setItem("blog", JSON.stringify(result)); 


    // APPEND 
    $("#faves").append('<div class="blog"><button class="del" id=' + id + '>x</button><a target="_blank" href=' + text + '>' + imgstem + id + imgstemclose + '</a></div>'); 
}); 

Démo: Fiddle