2017-09-14 6 views
0

私はHTMLのsiteNameとsiteUrlに2つの入力値を持ち、2つのオブジェクトプロパティ(name:siteName、url:siteUrl)に割り当てます。オブジェクトが作成された後、配列にプッシュしてローカルストレージに保存しますが、ローカルストレージに移動する前にオブジェクトプロパティ名の値をテストしたいのですが、既に警告が表示されている場合は特定のオブジェクトプロパティ値がローカルストレージアレイに既に格納されているかどうかをテストする方法

これは私です今のコード...

//get site name and site url 
var siteName = document.getElementById('siteName').value; 
var siteUrl = document.getElementById('siteUrl').value; 

var bookmark = { 

    name:siteName, 
    url:siteUrl 
} 

/test if item bookmarks is null 
if(localStorage.getItem('bookmarks') === null){ 

//Initiate Array 
var bookmarks = []; 

//add to array 
bookmarks.push(bookmark); 

//set to local storage 
localStorage.setItem('bookmarks', JSON.stringify(bookmarks)); 


//get bookmarks from local storage 
}else{ 
var bookmarks = JSON.parse(localStorage.getItem('bookmarks')); 

//add bookmark in array 
bookmarks.push(bookmark); 


//re-set back to local storage 
localStorage.setItem('bookmarks', JSON.stringify(bookmarks)); 

} 
+0

どこにいらっしゃいましたか? –

答えて

0

これを行うには2通りの方法があります。

第一METHOD-

//get localstorage value 
var bookmarks = JSON.parse(localStorage.getItem('bookmarks')); 
var flagExists = false; 

if(bookmarks != null && bookmarks.length > 0){ 
    for(var i=0; i<bookmarks.length; i++){ 
     var existingBookmark = bookmarks[i]; 
     //check if your current value against key name is already present in any existing bookmar 
     if(bookmark.name === existingBookmark.name){ 
      //do anything that you want here 
      flagExists = true; 
      break; 
     } 
    } 
} 

第二の方法は、Lodashライブラリを使用することです。あなたはlodashでこれを1行で行うことができます。

//get localstorage value 
var bookmarks = JSON.parse(localStorage.getItem('bookmarks')); 
var flagExists = false; 
var _ = require("lodash"); 

if(bookmarks != null && bookmarks.length > 0){ 
    var flagExists = _.find(bookmarks, {'name': bookmark.name}) != null; 
    //do whatever you want 
} 
+0

私はそれがうまくいくと思われる1番目の方法を試みるつもりです... –

+0

クール。とにかく、このような単純な作業には、第1の方法を使用する必要があります。 Lodashはかなり大きいので、ライブラリから多くの機能が必要な場合や、ES6形式のインポートを使用する必要がある場合に使用する必要があります。 – codeslayer1

+0

それは素晴らしい作品です...ありがとう、男性 –

0

.lengthを使用すると、lengthプロパティーは配列の要素数を返します。 .valueOf()メソッドは文字列オブジェクトの値を返しますが、.valueOf()ではコード内で明示的に使用することはできません。

関連する問題