2014-04-09 3 views
-1

방금 ​​localStorage로 약간의 코드를 재생할 수 있도록 코드를 코딩했습니다. json 배열에 항목을 추가 할 수 있습니다.이 모든 항목은 localStorage 키 아래에 저장됩니다. "saved"LocalStorage json 배열 저장 -> 중복 방지

그러나 json 배열에서 이중 항목을 방지 할 수 없었으며 대신 경고를 발생시켜야합니다.

$("#add").on("click", function(e){ 
    var items = localStorage.getItem('saved'); 
    var newitem = $('#theitem').val(); 

    if (items != null){ 
     var allitems = JSON.parse(localStorage["saved"]); 
     allitems.push({"myitem":newitem}); 
     localStorage.setItem('saved', JSON.stringify(allitems)); 
    }else{ 
     var allitems = [{"myitem":newitem}]; 
     localStorage.setItem('saved', JSON.stringify(allitems)); 
    } 
}); 

여기에 전체 코드는 다음과 같습니다 http://jsfiddle.net/Janosch/f0j71/

내가 중복을 방지하기 위해 변경해야 않는 '#add' click handler의 어떤 부분?

+0

관련 코드는 질문에 포함 할 필요가있다. –

+0

당신은 당신이 추가하려고하는 키/값을 이미 포함하고있는 객체를 찾기 위해'allitems'를 반복해야 할 것입니다. –

답변

1

이 작동합니다 :

... 
    var allitems = JSON.parse(localStorage["saved"]); 
    var repeated=allitems.filter(function(a){ return a.myitem==newitem}).length; 
    if(!repeated){ 
     allitems.push({"myitem":newitem}); 
     localStorage.setItem('saved', JSON.stringify(allitems)); 
    }else{alert('already added')} 
    ... 
+1

+1 고맙습니다. 이 작동합니다. 정확히 내가 무엇을 찾고 있었는지. 투표를하고 댓글을 달거나하는 대신 유용한 답변을 제공해 주셔서 감사합니다. – Kallewallex

+1

문제 없습니다, 당신의 proyect에 행운을 빕니다. – juvian